from common import sieve squares = set([ x*x for x in xrange(1, 1000000) ]) def check_number(number, prime): square = (number - prime) >> 1 return square in squares prime_set = sieve(1000000).primes() primes = list(prime_set) primes.sort() number = 3 while True: number += 2 if number in prime_set: continue conjecture = False for p in primes: if p >= number: break if check_number(number, p): conjecture = True break if not conjecture: break print number