def get_primes(n): primes = [] min_div = [0] * n for q in xrange(2, n): if min_div[q] == 0: primes.append(q) min_div[q] = q for p in primes: if p > min_div[q] or p * q >= n: break assert min_div[p * q] == 0 min_div[p * q] = p return primes def find_twins(primes): for i in xrange(1, len(primes)): if primes[i] - primes[i - 1] == 2: yield (primes[i - 1], primes[i]) print list(find_twins(get_primes(200)))
Standard input is empty
[(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73), (101, 103), (107, 109), (137, 139), (149, 151), (179, 181), (191, 193), (197, 199)]