提问者:小点点

如何对照计算检查一个范围内的所有数字?


所以我试着把所有的素数都打印出来,直到100。 到目前为止,我的代码如下:

primes = []

for num in range(100):
    if num > 1:
        for i in range(2, num):
            if num % i != 0:
                primes += [num]
                break
            else:
                break
            
print(primes)  

但是,当我运行代码时,它只对范围(for i in range(2,num))中的第一次迭代进行计算(if num%i!=0)。 在像15这样的数字的情况下,这是一个问题,其中中的第一个迭代是2,for i in range。 15除以2不是整数,因此运行素数+=[num]。 它已经进行了第一次迭代,并且没有运行其余的迭代。 有没有一种方法来运行范围内的所有迭代?


共3个答案

匿名用户

请尝试以下操作:

primes = []

for num in range(100):
    if num > 1:
        for i in range(2, num):
            if num % i == 0:
                break
        else:
            primes.append(num)

print(primes)  

只有当内部的for循环耗尽时,代码才会执行else块,即在不中断的情况下完成所有迭代。

匿名用户

你的逻辑有点错。 这是你该怎么做的

primes = []

for num in range(2, 100): # 0 and 1 aren't primes
    for i in range(2, num):
        if num % i == 0:
            break
    else: # the else condition is for the for loop i.e. if it executes without break
        primes.append(num)
            
print(primes)  

匿名用户

所有功能可能是您正在寻找的!