gpt4 book ai didi

python - For循环在while循环中中断

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:05 24 4
gpt4 key购买 nike

这是我的代码:

primes = [2, 3]

while len(primes) != 1001:
a = primes[-1] + 2
for i in primes:
if a % i == 0:
break
else:
print(primes)
primes.append(a)

print(primes[1002])

这应该创建一个列表直到第 1001 个质数,然后打印第 1001 个数。它首先取列表中的最后一个数字并加 2,然后检查给定数字是否可以被素数列表中的任何成员整除。如果它是可整除的,则 for 循环中断并跳过 else 子句。如果不是,则将该数字附加到素数列表。重复该过程,直到列表的长度为 1001。循环结束后,打印最后一个数字。

然而,输出如下:

[2, 3]
[2, 3, 5]
_

直到手动终止程序才会终止。你能告诉我我做错了什么吗?

最佳答案

这是因为,在 primes[-1] + 2 不是质数的情况下,没有状态发生变化(因此程序永远循环)。

更好的方法可能是这样的:

 from itertools import count

primes = [2, 3]
for a in count(5, step=2):
for p in primes:
if a % p == 0:
break
else:
primes.append(a)
if len(primes) > 1001:
break

关于python - For循环在while循环中中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com