卡在运行模式Jupyter笔记本

时间:2018-06-29 15:13:48

标签: jupyter

每当我使用以下代码运行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])    

有人可以在他们的计算机上运行此代码,然后告诉我输出是什么吗?我真的很感激任何答案。

1 个答案:

答案 0 :(得分:0)

您的代码被卡住了,因为您的主要测试功能变得非常慢!

我在运行您的代码时发现了100、1000、2000和4000个质数的停止点。运行时间分别为0.01、0.23、0.98和4.31秒。

您可以看到加倍的质数可以找到(大约)四倍的时间。考虑到要测试n是否为质数,这是有道理的,您必须对照其他n-2个数字(不包括1n)进行检查。因此,您的算法的time complexity至少为O(n^2),才能找到n素数。

(另外,在30秒内找到10002个质数后,我得到了104759。我一开始不小心输入了“ 100002”,它长时间运行了 而没有任何结果...)