Проблема из проекта Euler100.
Мой код должен находить сумму простых чисел ниже n.
Работает нормально, только когда n меньше 31.
Когда n равно 32, я все еще получил 129, когда n равно 2001, я все еще получил 129. (Сумма простых чисел ниже 29, включая 29, равна 129, поэтому, если n равно 32, предполагается, что он вернется 160).
Я не понимаю, почему ... Вот мой код (python)
# Except 2 and 3, primes are written in the form of 6k±1.(edited)
import math
def is_prime(number):
for i in range(2, int(math.sqrt(number))+1):
if number % i == 0:
return False
else:
continue
return True
def prime_summation(n):
prime_sum = 0
prime_i = [5, 7]
if int(n) == 3:
prime_sum = 2
elif int(n) < 5 and int(n) > 3:
prime_sum = 5
elif int(n) >= 5:
prime_sum = 5 #2 + 3 = 5
for prime in prime_i:
while prime < int(n) and is_prime(prime):
prime_sum += prime
prime += 6
return prime_sum
if __name__ == '__main__':
n = input("Sum of primes below n, n ?: ")
print(prime_summation(n))