diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2010-06-21 16:51:58 +0200 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2014-08-31 20:32:41 +0200 |
| commit | 0d39c1f1cae8c5e4f5f6bbab23fff7d8e36b4e7e (patch) | |
| tree | 2b4a6f36bd41b4eef22546c423c31b5ad04cf61c | |
| parent | be6b51fb35411f2ed9dd1114b36e0b6d54fe1496 (diff) | |
projecteuler solution 46
| -rw-r--r-- | src/projecteuler/046.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/projecteuler/046.py b/src/projecteuler/046.py new file mode 100644 index 0000000..24a2983 --- /dev/null +++ b/src/projecteuler/046.py @@ -0,0 +1,35 @@ + +from common import sieve + +squares = set([ x*x for x in xrange(1, 1000000) ]) + +def check_number(number, prime): + square = (number - prime) >> 1 + return square in squares + +prime_set = sieve(1000000).primes() +primes = list(prime_set) +primes.sort() + +number = 3 + +while True: + number += 2 + + if number in prime_set: + continue + + conjecture = False + + for p in primes: + if p >= number: + break + if check_number(number, p): + conjecture = True + break + + if not conjecture: + break + +print number + |
