Сумма простых чисел меньше 10 равна 2 + 3 + 5 + 7 = 17. Найдите сумму всех простых чисел меньше двух миллионов. - PullRequest
0 голосов
/ 02 августа 2020
sum_ans=17
for i in range(11,2000000):
    for j in range(2,int(i**0.5)):
        if i%j==0:
            break
    else:
        sum_ans+=i
print(sum_ans)

Код, который я получил, дает ответ 143064094781, а правильный ответ - 142913828922, но я не могу понять, где я ошибся. Так может ли кто-нибудь мне помочь.

1 Ответ

0 голосов
/ 02 августа 2020

Параметр остановки диапазона является исключительным . Это означает, что ваш код вычисляет только j от 2 до 1 меньше, чем i**0.5. Чтобы исправить это, вы можете добавить 1, что означает, что ваш конечный код будет выглядеть примерно так, обеспечивая правильный вывод 142913828922:

sum_ans=17
for i in range(11,2000000):
    for j in range(2,int(i**0.5+1)):
        if i%j==0:
            break
    else:
        sum_ans+=i
print(sum_ans)
...