Project Euler Problem 50
I wrote a bunch of these but never posted them up, so I'm just uploading them in bulk now. Not much to say about them at this point.
- #!/usr/bin/python
- import Crypto.Util.number
- def primes(n):
- """ returns a list of prime numbers from 2 to < n """
- if n < 2: return []
- if n == 2: return [2]
- # do only odd numbers starting at 3
- s = range(3, n, 2)
- # n**0.5 may be slightly faster than math.sqrt(n)
- mroot = n ** 0.5
- half = len(s)
- i = 0
- m = 3
- while m <= mroot:
- if s[i]:
- j = (m * m - 3)//2
- s[j] = 0
- while j < half:
- s[j] = 0
- j += m
- i = i + 1
- m = 2 * i + 3
- # make exception for 2
- return [2]+[x for x in s if x]
- primes_list = primes(4000)
- print primes_list
- max_len = 0
- max_sum = 0
- primes_len = len(primes_list)
- for i1 in range(primes_len):
- for i2 in range(i1+1, primes_len):
- my_len = i2-i1
- if my_len > max_len:
- my_sum = sum(primes_list[i1:i2])
- if my_sum < 1000000:
- if Crypto.Util.number.isPrime(long(my_sum)):
- max_len = my_len
- max_sum = my_sum
- print max_sum