【发布时间】:2020-08-26 21:42:21
【问题描述】:
我只是想写一个简单的循环来给我一个素数列表。我不明白为什么当计数达到设定值时循环没有停止。
def factors(n):
f = []
for i in range(1,n+1):
if n%i == 0:
f.append(i)
return(f)
primes = []
count = 0
while count < 10:
for j in range(1,1000):
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
print(count)
计数达到 169,实际上,生成的列表中有 169 个素数,但我希望它停止在某个数字上,这样我就不必四处寻找,比如第 501 个素数.
我尝试了另一种方法,但同样的事情发生了。我的猜测是计数和 for j in range(1,1000) 相互干扰。
primes = []
count = 0
while True:
if count < 10:
for j in range(1,1000):
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
else:
break
【问题讨论】:
-
for j in range(1,1000):无论如何都会执行 999 次。在内部循环完成之前,不会再次评估外部while循环的条件。如果您想在特定的count值处停止,则需要在每次递增时检查它。 -
计算 所有
n的因子,当你只关心是否有超过 2 的时候是低效的。
标签: python while-loop counter