Christian Goldbach sagte voraus, dass alle ungeraden zusammengesetzten Zahlen durch das doppelte Quadrat und die Summe der Primzahlen dargestellt werden könnten.
9 = 7 + 2×1**2
15 = 7 + 2×2**2
21 = 3 + 2×3**2
25 = 7 + 2×3**2
27 = 19 + 2×2**2
33 = 31 + 2×1**2
Später stellte sich diese Vermutung als falsch heraus.
Was ist die kleinste ungerade Zusammensetzungszahl, die nicht durch die Summe der doppelten Quadratzahl und der Primzahl dargestellt werden kann? http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2046
Es wurde bestimmt, ob die zusammengesetzte Zahl eine Primzahl war oder nicht, die durch Subtrahieren der doppelten quadratischen Zahl erhalten wurde oder nicht.
Klicken Sie hier für mymath. https://github.com/cof01/ProjectEuler/blob/master/mymath.py
# coding: utf-8
import math
from mymath import get_primes, is_prime
def main():
MAX=10**6
pri = get_primes(MAX)
sq_list = [i*i*2 for i in range(int((MAX**0.5)/2)+1)]
ans = 0
for odd in range(9,MAX,2):
if is_prime(odd, pri):
continue
SumOfPrimeAndTwiceSquare = True
for sq in sq_list:
if sq >= odd:
break
if is_prime(odd - sq, pri):
SumOfPrimeAndTwiceSquare = False
break
if SumOfPrimeAndTwiceSquare:
ans = odd
break
print ans
main()
Recommended Posts