from sys import stdout def fibs(): a,b = 0,1 yield a while True: yield b a,b = b,a+b def is_fib(x): return (5*x^2+4).is_square() or (5*x^2-4).is_square() k = 0 ct = 0 for n in fibs(): if n > 0 and k % 1000 == 0: digits = floor(log(n,10)) #print "test f("+str(k)+") >= 10^"+str(digits),"\r", stdout.flush() k+=1 d = n.digits() if n<100 or is_fib(ZZ([d[0],d[-1]],10)): ct += 1 print ct,n if ct == 100: break