【发布时间】:2020-06-25 23:08:01
【问题描述】:
所以我尝试打印最多 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 这样的数字,这是一个问题,其中for i in range 中的第一次迭代是 2。15 除以 2 不会给出整数,因此它运行 primes += [num]。它已经进行了第一次迭代,并没有运行其余的迭代。有没有办法运行范围内的所有迭代?
【问题讨论】:
-
只需删除
if num % i != 0:中的中断,您需要检查该数字对于该范围内的所有数字是否都不可整除(但您最多可以到 sqrt(num)),否则程序逻辑错误。
标签: python