gpt4 book ai didi

Python while 循环不会退出(初学者)

转载 作者:行者123 更新时间:2023-11-28 21:51:34 25 4
gpt4 key购买 nike

末尾的 while 循环没有退出,我不明白为什么。

import sys

def is_prime(n):
if n == 3:
return True
elif n == 4:
return False
else:
for i in xrange(2,n):
if n % i == 0:
return False
return True

primes = [2, 3]

counter = int(raw_input("Which prime number would you like to find? "))

while len(primes) < counter:
for i in xrange(primes[-1], sys.maxint):
if is_prime(i):
primes.append(i)

print(primes[-1])

最佳答案

它不会退出的原因是因为您对潜在素数的搜索空间太大了。你的桌面没那么快!他们有 super 计算机试图计算这些东西。

for i in xrange(primes[-1], sys.maxint):

首先,尝试将其更改为更合理的内容:

for i in xrange(primes[-1], 10000):

您会看到您的循环确实退出了。

编辑:

您可以对这个问题进行一些不错的优化。首先,您应该递增 2 以跳过所有偶数:

for i in xrange(primes[-1], sys.maxint, 2):

其次,您只需要测试直到潜在素数的平方根的除数。

for i in xrange(2,n**(0.5)):

这样做的原因是任何两个乘积为 n 的数字,其中一个总是小于 n 的平方根 - 因此如果您没有当您达到 n 的平方根时还没有找到除数,您可以停止。这大大减少了您搜索更大数字的空间。

关于Python while 循环不会退出(初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043535/

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