Задача 50 проекта Эйлера гласит:
Простое число 41 можно записать как сумму шести последовательных простых чисел:
41 = 2 + 3 + 5 + 7 + 11 + 13
Это самая длинная сумма последовательных простых чисел, которая добавляет к простому числу меньше ста.
Самая длинная сумма последовательных простых чисел меньше одной тысячи, которая добавляет простое число, содержит 21 член и равна 953.
Какое простое число, меньшее одного миллиона, можно записать как сумму самых последовательных простых чисел?
В моем подходе я предварительно составил список простых чисел, используя сито эратосфена, затем
в самой функции я продолжаю добавлять последующие элементы моего списка простых чисел
и каждый раз, когда я делаю это, я проверяю, является ли сама сумма простой, и если это так, я отслеживаю ее как самую большую и возвращаю ее. Ну, это должно работать, я думаю? Очевидно, что ответ неправильный, но интересно то, что когда я меняю сито, чтобы получить простые числа ниже 100000, это не дает ошибку индекса, но дает другой результат.
from algorithms import gen_primes
primes = [i for i in gen_primes(1000000)]
def main(n):
idx, total, maximum = 0, 0, 0
while total < n:
total += primes[idx]
idx += 1
if total in primes:
maximum = total
return maximum
print(main(1000000))