为什么此代码给出的结果不正确?

时间:2019-10-11 13:09:40

标签: python-3.x

我正在尝试打印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)

1 个答案:

答案 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