Python 2, 193 ... 179 178 bytes
d=10
u=d**2000
v=u*u
def s(n,a=d,i=9):
while a-i:i,a=a,(a+n/a)/2
return a
p,q,r,t=s(2*v),s(3*v),1,0
while p:t+=(p+q)%d*r;p/=d;q/=d;r*=d
for i in range(1000):print t/u;t=v/(t%u)
Calculating sqrt(2)
and sqrt(3)
to such a precision with a short code is a tough job in Python and other languages.
2000 digits is needed2000 digits is needed to ensure the expansion is correct (1020 suffices, but I'm not going to ensure the expansion is correctmodify it because no improvement), and lines 4-6 is the integer square root.
193 > 180 : The digit-wise modulo sum is now carried by a loop instead of array manipulation
180 > 179 : Replaced the 6 occurrences of 10
using d
with the cost of defining with 5 bytes, cutting 1 byte in total
179 > 178 : Just realized that a!=i
can be replaced by a-i