def test_sieve(): s = Sieve(100) n.assert_equal(s.isPrime(0), False) n.assert_equal(s.isPrime(1), False) n.assert_equal(s.isPrime(2), True) n.assert_equal(s.isPrime(4), False) n.assert_equal(s.isPrime(9), False) n.assert_equal(s.isPrime(2), True) n.assert_equal(s.isPrime(7), True) n.assert_equal(s.isPrime(97), True) n.assert_equal(s.isPrime(99), False)
def main(): sieve = Sieve(1000000) s = [p for p in sieve] max_len = 0 max_sum = 0 for i in xrange(len(s) - 1): for j in xrange(i + 1, len(s)): cons_sum = sum(s[k] for k in xrange(i, j + 1)) if cons_sum > 1000000: break cons_len = j - i + 1 if sieve.isPrime(cons_sum): if cons_len > max_len: max_len = cons_len max_sum = cons_sum print max_sum print max_len
from sieve import Sieve from itertools import combinations sieve = Sieve(10000) def permutations(s): if s == '': yield '' for i, c in enumerate(s): for perm in permutations(''.join(d for j, d in enumerate(s) if j != i)): yield c + perm for p in sieve: if len(str(p)) != 4: continue p_perm = sorted({x for x in map(int, permutations(str(p))) if sieve.isPrime(x)}) if len(p_perm) < 3: continue for combi in combinations(p_perm, 3): if (combi[1] - combi[0]) == (combi[2] - combi[1]): print combi break