-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheuler50-1.py
63 lines (54 loc) · 1.05 KB
/
euler50-1.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
55
56
57
58
59
60
61
62
63
def sieve(n):
j=2
k=0
yolist=[1]*n
while j**2<n:
k=j**2
while k<n:
yolist[k]=0
k += j
j += 1
while yolist[j]==0:
j += 1
return yolist
def primelist(l,u):
i = l
ans=[]
sieve_n=sieve(u + 1)
if i == 1:
i = 2
while i <= u:
if sieve_n[i]:
ans.append(i)
i += 1
return ans
yo = primelist(1,29)
for elem in yo:
print elem
yo = primelist(1,1000000)
no_primes = len(yo);
LP = {}
NoPrimeAdded = [1]*no_primes
for elem in yo:
LP[elem] = elem
for i in xrange(0,no_primes,1):
curr_prime = yo[i]
curr_sum = curr_prime
y = i + 1;
while curr_sum < 1000000 and y < no_primes:
curr_sum += yo[y]
if LP.has_key(curr_sum):
NoPrimeAdded[i] = y - i
LP[curr_prime] = curr_sum
# else mein kya?
y += 1
# Done with ith prime
# got values for longest conti prime sum starting from ith prime
max_no_posn = 1
curr_max = 0
for i in xrange (0,no_primes,1):
if NoPrimeAdded[i] > curr_max:
max_no_posn = i
curr_max = NoPrimeAdded[i]
print curr_max
print LP[yo[max_no_posn]]