计算素数的数量,直到达到某个较大的值

时间:2018-08-21 12:24:16

标签: python primes

我写了这个超级简单的python代码来计算素数的个数,直到某个大数值为止。问题是对于HtmlElementsCheck这样的值,该程序需要花费大量时间,我想改进此代码以获得更快的结果和更好的性能。 这是代码:

1e+8

1 个答案:

答案 0 :(得分:-1)

如评论中所建议,您可以开始改进您的 is_prime()函数。 尝试使用其他算法,例如建议的筛子或Miller Rabin test。我在一个密码学研讨会上实现了后者,但并不难。 (注意:该算法是一种概率算法,但不要被它所困扰)。 这可能会导致更好的时间复杂度来进行您的首要检查。

之后,您可能会考虑多次运行ur count_prime()函数。在这里,您可以存储运行中的值,然后从下一次开始的这一点开始。

示例:

  1. 在第一次运行中,您计算​​n = 5000 的所有素数。您得到一些结果= x 您将x存储为5000。
  2. 在第二次运行中,您可能输入 10.000 作为您指定的输入。现在,您无需从2重新开始,但是您可以从存储的结果开始,然后从5001开始继续计算。结果的加法就是10.000的结果