예제 #1
0
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)
예제 #2
0
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
예제 #3
0
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