Revisions

gist: 224761 Download_button fork
public
Public Clone URL: git://gist.github.com/224761.git
Embed All Files: show embed
sieve.py #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/python
# vim: fileencoding=utf-8
from math import sqrt
from itertools import ifilter, count
 
def sieve():
g = count(2)
while True:
prime = g.next()
yield prime
g = ifilter(lambda x, prime=prime: x%prime, g)
 
def is_prime(n):
limit = int(sqrt(n))
for i in range(limit, 1, -1):
if n % i == 0:
return False
else:
return True
 
limit = 1709023
for prime in sieve():
if prime > limit:
print "Error"
break
else:
q, r = divmod(limit, prime)
if r == 0 and is_prime(q):
print "The key is %i and %i" % (prime, q)
break