-
Notifications
You must be signed in to change notification settings - Fork 0
/
e132.py
54 lines (46 loc) · 857 Bytes
/
e132.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import proj_euler as pe
cap = 2*10**5
pcap = 2*10**5
n = 10**9
mask = pe.mark_primes(pcap)
cache = []
pDivs = {}
i = 1
e1 = 0
while i < cap:
j = 1
e2 = 0
cache.append([])
while j*i < cap:
t = j*i
cache[e1].append(t)
for k in xrange(t,cap,t):
if pe.is_prime(k+1,pcap,mask):
if k+1 not in pDivs:
pDivs[k+1] = [t]
else:
pDivs[k+1].append(t)
j *= 5
e2 += 1
i *= 2
e1 += 1
s = 0
num_found = 0
m = 40
for p in sorted(pDivs):
if p in [2,5,3]:
continue
for div in sorted(pDivs[p]):
if pow(10,div,p) == 1:
# print p,div
if n % div == 0:
print p
num_found += 1
s += p
break
else:
break
if num_found == m:
print "answer: %d" % s
break
print "TOTAL NUM FOUND %d" % num_found