annotate problem50.py @ 14:49c96972949d default tip

#50 rewrite of solution
author Dominic Cleal <dominic@computerkb.co.uk>
date Mon, 01 Dec 2008 19:11:55 +0000
parents fa152d695acd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
1 import primes
0
0e08f4decf67 Adding files from xenon
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
2
14
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
3 def search(pmax):
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
4 cur = { }
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
5 max = { }
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
6 s = primes.testsieve()
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
7 for p in s.sieve():
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
8 if p > pmax:
0
0e08f4decf67 Adding files from xenon
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
9 break
14
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
10 if p not in cur:
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
11 cur[p] = (0, 0)
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
12 todel = []
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
13 for i in cur:
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
14 cur[i] = (cur[i][0] + 1, cur[i][1] + p)
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
15 if cur[i][1] > pmax:
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
16 todel.append(i)
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
17 elif s.isprime(cur[i][1]):
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
18 max[i] = cur[i]
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
19 for i in todel:
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
20 del cur[i]
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
21 retmax = None
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
22 for i in max:
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
23 if retmax is None or max[i][0] > retmax[0]:
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
24 retmax = max[i]
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
25 return retmax
0
0e08f4decf67 Adding files from xenon
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
26
14
49c96972949d #50 rewrite of solution
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
27 print "Max conseq has %d terms, totalling %d" % search(1000000)