【发布时间】:2013-09-13 18:39:36
【问题描述】:
我需要在 Ruby 或 Python 中以最快的方式找到第 n 个素数:
require "prime"
puts Prime.first(n).join("")
对于 >= 100000 的数字,这需要很长时间。
如何优化这段代码?
【问题讨论】:
-
最快的方法是只列出所有素数,然后索引它......但是它不现实,因为如果你在列表中放入 100000 个素数,我会要求第 100001 个素数.但是您可以对erathmus(sp?)进行筛分并用前1000个左右的素数(或100000或其他)播种(或者甚至只是第一个,但是您播种的素数越多,它应该越快)
-
@MartijnPieters 找到第 n 个素数与找到 n 以下的所有素数非常不同 :)
-
@Shashank:也许吧,我没有投票结束这个作为一个骗子。然而,另一篇文章必须具有与此问题相关的一些价值。
-
Monkeypatching
Integer和Prime类与找到的代码 here 导致边际改进(对于 n = 200000,在我的机器上从 11.52s 到 9.08s)。
标签: python ruby optimization primes