# collatz primes
from random import randint
def isPrime(n, k=5): # miller-rabin
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
primeCount = [0,0,1]
def pCount(n):
k, p = n, 0
while k > 0:
if k < n:
t = p + primeCount[k]
primeCount.append(t)
return t
elif k % 2 == 0:
k = k / 2
elif isPrime(k):
p = p + 1
k = 3*k + 1
else:
k = 3*k + 1
n = 3
t = pCount(n)
while t < 65:
n = n + 1
t = pCount(n)
print n
def collatz(n):
cs = []
while n != 1:
cs.append(n)
n = 3*n+1 if n&1 else n//2
cs.append(1)
return cs
filter(isPrime,collatz(1805311))
IyBjb2xsYXR6IHByaW1lcwoKZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQKCmRlZiBpc1ByaW1lKG4sIGs9NSk6ICMgbWlsbGVyLXJhYmluCiAgICBpZiBuIDwgMjogcmV0dXJuIEZhbHNlCiAgICBmb3IgcCBpbiBbMiwzLDUsNywxMSwxMywxNywxOSwyMywyOV06CiAgICAgICAgaWYgbiAlIHAgPT0gMDogcmV0dXJuIG4gPT0gcAogICAgcywgZCA9IDAsIG4tMQogICAgd2hpbGUgZCAlIDIgPT0gMDoKICAgICAgICBzLCBkID0gcysxLCBkLzIKICAgIGZvciBpIGluIHJhbmdlKGspOgogICAgICAgIHggPSBwb3cocmFuZGludCgyLCBuLTEpLCBkLCBuKQogICAgICAgIGlmIHggPT0gMSBvciB4ID09IG4tMTogY29udGludWUKICAgICAgICBmb3IgciBpbiByYW5nZSgxLCBzKToKICAgICAgICAgICAgeCA9ICh4ICogeCkgJSBuCiAgICAgICAgICAgIGlmIHggPT0gMTogcmV0dXJuIEZhbHNlCiAgICAgICAgICAgIGlmIHggPT0gbi0xOiBicmVhawogICAgICAgIGVsc2U6IHJldHVybiBGYWxzZQogICAgcmV0dXJuIFRydWUKCnByaW1lQ291bnQgPSBbMCwwLDFdCgpkZWYgcENvdW50KG4pOgogICAgaywgcCA9IG4sIDAKICAgIHdoaWxlIGsgPiAwOgogICAgICAgIGlmIGsgPCBuOgogICAgICAgICAgICB0ID0gcCArIHByaW1lQ291bnRba10KICAgICAgICAgICAgcHJpbWVDb3VudC5hcHBlbmQodCkKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICBlbGlmIGsgJSAyID09IDA6CiAgICAgICAgICAgIGsgPSBrIC8gMgogICAgICAgIGVsaWYgaXNQcmltZShrKToKICAgICAgICAgICAgcCA9IHAgKyAxCiAgICAgICAgICAgIGsgPSAzKmsgKyAxCiAgICAgICAgZWxzZToKICAgICAgICAgICAgayA9IDMqayArIDEKCm4gPSAzCnQgPSBwQ291bnQobikKd2hpbGUgdCA8IDY1OgogICAgbiA9IG4gKyAxCiAgICB0ID0gcENvdW50KG4pCnByaW50IG4KCmRlZiBjb2xsYXR6KG4pOgogICAgY3MgPSBbXQogICAgd2hpbGUgbiAhPSAxOgogICAgICAgIGNzLmFwcGVuZChuKQogICAgICAgIG4gPSAzKm4rMSBpZiBuJjEgZWxzZSBuLy8yCiAgICBjcy5hcHBlbmQoMSkKICAgIHJldHVybiBjcwoKZmlsdGVyKGlzUHJpbWUsY29sbGF0eigxODA1MzExKSk=