为什么这些素数发生器中的一个比另一个更快?

时间:2016-01-22 17:20:45

标签: python time any primality-test

最近对简单的素性测试感兴趣。我有以下两个函数返回给定输入的所有素数列表。我做的第一个,另一个基于维基百科的propity测试的伪代码。然后我稍微改变了我认为最接近维基百科的东西。

当我计时(以10000作为输入/限制)时,我的时间比另一个长一个数量级。我不太清楚为什么,就我而言,他们做的事情非常类似。我通过一个带有“any”的素数列表进行检查,而wiki检查这些相同的数字,但是使用while循环生成它们。我错过了什么?

filterModel

1 个答案:

答案 0 :(得分:0)

any将遍历整个列表,以查看是否有任何元素被评估为true。 while循环中断的速度更快,因为它考虑了元素的递增顺序。您可以使用takewhile中的itertools进行游戏,并且您应该获得与while循环相似的运行时间。