-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheuler77.py
45 lines (39 loc) · 874 Bytes
/
euler77.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
import pickle
p=dict()
p[0]=1
p[1]=1
f = open('primes.txt')
primes = pickle.load(f)
f.close()
primes_set = set(primes)
def top_prime(n):
while not n in primes_set:
n-=1
if n<2:
return 0
return primes.index(n)+1
total_number = 0
def build_p(n):
global total_number
total_number = 0
ans=[]
arrays= []
for x in reversed(primes[0:top_prime(n)]):
ans.append([x])
while len(ans)>0:
entry = ans.pop(0)
for x in next_digits(entry,n):
ans.append(entry + [x])
p[n] = total_number
def next_digits(entry,n):
global total_number
total = n - sum(entry)
if total == 0:
total_number += 1
return []
maximum = entry[-1]
if total < maximum:
start = total
else:
start = maximum
return list(reversed(primes[0:top_prime(start)]))