# prime fibonacci numbers
def isPrime(n, k=5): # miller-rabin
from random import randint
if n < 2: return False
for p in [2,3,5,7,11,13,17,19,23,29]:
if n % p == 0: return n == p
s, d = 0, n-1
while d % 2 == 0:
s, d = s+1, d/2
for i in range(k):
x = pow(randint(2, n-1), d, n)
if x == 1 or x == n-1: continue
for r in range(1, s):
x = (x * x) % n
if x == 1: return False
if x == n-1: break
else: return False
return True
a, b, f = 1, 1, 2
while f < 1000000000:
if isPrime(f): print f
a, b, f = b, f, b+f
IyBwcmltZSBmaWJvbmFjY2kgbnVtYmVycwoKZGVmIGlzUHJpbWUobiwgaz01KTogIyBtaWxsZXItcmFiaW4KICAgIGZyb20gcmFuZG9tIGltcG9ydCByYW5kaW50CiAgICBpZiBuIDwgMjogcmV0dXJuIEZhbHNlCiAgICBmb3IgcCBpbiBbMiwzLDUsNywxMSwxMywxNywxOSwyMywyOV06CiAgICAgICAgaWYgbiAlIHAgPT0gMDogcmV0dXJuIG4gPT0gcAogICAgcywgZCA9IDAsIG4tMQogICAgd2hpbGUgZCAlIDIgPT0gMDoKICAgICAgICBzLCBkID0gcysxLCBkLzIKICAgIGZvciBpIGluIHJhbmdlKGspOgogICAgICAgIHggPSBwb3cocmFuZGludCgyLCBuLTEpLCBkLCBuKQogICAgICAgIGlmIHggPT0gMSBvciB4ID09IG4tMTogY29udGludWUKICAgICAgICBmb3IgciBpbiByYW5nZSgxLCBzKToKICAgICAgICAgICAgeCA9ICh4ICogeCkgJSBuCiAgICAgICAgICAgIGlmIHggPT0gMTogcmV0dXJuIEZhbHNlCiAgICAgICAgICAgIGlmIHggPT0gbi0xOiBicmVhawogICAgICAgIGVsc2U6IHJldHVybiBGYWxzZQogICAgcmV0dXJuIFRydWUKCmEsIGIsIGYgPSAxLCAxLCAyCndoaWxlIGYgPCAxMDAwMDAwMDAwOgoJaWYgaXNQcmltZShmKTogcHJpbnQgZgogIAlhLCBiLCBmID0gYiwgZiwgYitm