summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2010-06-21 16:51:58 +0200
committerReiner Herrmann <reiner@reiner-h.de>2014-08-31 20:32:41 +0200
commit0d39c1f1cae8c5e4f5f6bbab23fff7d8e36b4e7e (patch)
tree2b4a6f36bd41b4eef22546c423c31b5ad04cf61c
parentbe6b51fb35411f2ed9dd1114b36e0b6d54fe1496 (diff)
projecteuler solution 46
-rw-r--r--src/projecteuler/046.py35
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
+