所以我试着把所有的素数都打印出来,直到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]
。 它已经进行了第一次迭代,并且没有运行其余的迭代。 有没有一种方法来运行范围内的所有迭代?
请尝试以下操作:
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)
所有功能可能是您正在寻找的!