我正在尝试打印2到用户输入的给定数字N之间的所有素数之和。因此,如果输入数字为10,则输出应为17。我的以下代码虽然有效,但无法提供准确的结果。这里似乎是什么问题?
N=int(input())
sum_prime=0`enter code here`
#Calculate primes between 2 to N
for value in range(2,N+1):
if value>1:
for i in range(2,value//2+1):
if value%i==0:
break
else:
sum_prime+=value
print(sum_prime)
答案 0 :(得分:0)
我了解您的错误。您可以向sum_prime
添加数字,即使尚未完成检查其是否为质数的循环。您必须将添加项移出循环,例如:
N=int(input())
sum_prime=0
#Calculate primes between 2 to N
for value in range(2,N+1):
is_prime = True # note that I have added a new variable
for i in range(2,value//2+1):
if value%i==0:
is_prime = False
break
if is_prime:
sum_prime += value # the addition is now out of the inner loop
print(sum_prime)
如果我输入10
,它将正确输出:
17