Le nombre premier 41 peut être exprimé comme la somme de six nombres premiers consécutifs:
41 = 2 + 3 + 5 + 7 + 11 + 13.
C'est le plus long lorsqu'un nombre premier inférieur à 100 est représenté par la somme de nombres premiers consécutifs.
De même, lorsque la somme des nombres premiers consécutifs représente un nombre premier inférieur à 1000, le plus long est 953, qui compte 21 termes.
Quel nombre premier est le plus long lorsque l'on exprime un nombre premier inférieur à 1 million comme somme de nombres premiers consécutifs?
Je l'ai résolu comme suit.
pri ['list']
pri ['list'] [i]
d'un certain point de départ.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