每当我使用以下代码运行shell时,我的Jupyter Notebook都会陷入运行模式:
def is_prime(num):
if num < 2:
return False
for x in range(2, num - 1):
if num % x == 0:
return False
return True
prime_list = []
num = 2
while True:
if is_prime(num):
prime_list.append(num)
num += 1
if len(prime_list) == 10002:
break
print(prime_list[-1])
有人可以在他们的计算机上运行此代码,然后告诉我输出是什么吗?我真的很感激任何答案。
答案 0 :(得分:0)
您的代码被卡住了,因为您的主要测试功能变得非常慢!
我在运行您的代码时发现了100、1000、2000和4000个质数的停止点。运行时间分别为0.01、0.23、0.98和4.31秒。
您可以看到加倍的质数可以找到(大约)四倍的时间。考虑到要测试n
是否为质数,这是有道理的,您必须对照其他n-2
个数字(不包括1
和n
)进行检查。因此,您的算法的time complexity至少为O(n^2)
,才能找到n
素数。
(另外,在30秒内找到10002个质数后,我得到了104759
。我一开始不小心输入了“ 100002”,它长时间运行了 而没有任何结果...)