Die Primzahl 41 kann als die Summe von sechs aufeinanderfolgenden Primzahlen ausgedrückt werden:
41 = 2 + 3 + 5 + 7 + 11 + 13.
Dies ist die längste Zeit, wenn eine Primzahl unter 100 durch die Summe aufeinanderfolgender Primzahlen dargestellt wird.
Wenn die Summe aufeinanderfolgender Primzahlen eine Primzahl kleiner als 1000 darstellt, ist die längste 953 mit 21 Termen.
Welche Primzahl ist die längste, wenn eine Primzahl von weniger als 1 Million als Summe aufeinanderfolgender Primzahlen ausgedrückt wird?
Ich habe es wie folgt gelöst.
import mymath
def main():
MAX = 10**6
pri = mymath.get_primes(MAX)
pri_length = len(pri['list'])
i, c_max, ans = 0, 0, 0
while i < pri_length:
s, j, c = pri['list'][i], i + 1, 1
while j < pri_length and s + pri['list'][j]< MAX:
s += pri['list'][j]
c += 1
if pri['bool'][s] and c_max < c:
ans, c_max = s, c
j += 1
i += 1
print ans
main()
Recommended Posts