You're breaking out of the inner loop if the number is not prime, but then are still executing the line
sum += num
There are multiple solutions to this.
- Moving the primality test to a function
def is_prime(x):
for i in range(2, int(x ** 0.5) + 1):
if x % i == 0:
return False
return True
sum = 2
for num in range(3, 2000000, 2):
if is_prime(num):
sum += num
print(sum)
is_prime
variable
sum = 2
for num in range(3, 2000000, 2):
is_prime = True
for i in range(2, 1+int(num**0.5)):
if num % i == 0:
is_prime = False
break
if is_prime:
sum += num
print(sum)
all()
and a list comprehension
sum = 2
for num in range(3, 2000000, 2):
if all([num % i != 0 for i in range(int(x ** 0.5) + 1)]):
sum += num
print(sum)