Python 将50到70之间的所有素数相加-为什么我的代码不起作用?

Python 将50到70之间的所有素数相加-为什么我的代码不起作用?,python,primes,Python,Primes,代码: 因此,如果你运行代码,它会先说“50不是素数”,然后说“50是素数”。 我不明白。只有在运行测试循环之前,我才将is_prime布尔值设置为True。在测试循环期间,如果数字不是素数,它将is_prime设置为False。因此,在我看来,is_prime没有设置回True(直到循环的下一次迭代开始),因此数字(I)应该被标识为“nota prime”。 我哪里错了?这是逻辑。。。如果is prime为False,那么它就不是prime。你把那部分倒过来了 counter = 50 tot

代码:

因此,如果你运行代码,它会先说“50不是素数”,然后说“50是素数”。 我不明白。只有在运行测试循环之前,我才将is_prime布尔值设置为True。在测试循环期间,如果数字不是素数,它将is_prime设置为False。因此,在我看来,is_prime没有设置回True(直到循环的下一次迭代开始),因此数字(I)应该被标识为“nota prime”。
我哪里错了?

这是逻辑。。。如果is prime为False,那么它就不是prime。你把那部分倒过来了

counter = 50
total = 0
for i in range(counter, 70):
    is_prime = True
    for j in range(2, i):
        remainder = i % j
        print("i is : ", i, "   - and j is : ", j, " and the remainder is : ", remainder)
        if remainder == 0:
            is_prime = False
            print("remainder = ", remainder,", so ", i, "is not a prime")
    if is_prime:
        total += i
    else:
        print(i, " is a prime")
print(total)

当余数==0时中断内部循环我尝试过,但不起作用…Owww dangit。。所以我的计算是正确的。我上次打印的声明是错误的。。太蠢了。。谢谢你指出这一点…-)
if is_prime:
    print(i, " is a prime")
    total += i
else:
    print(i, " is not a prime")