【发布时间】:2015-02-18 06:49:19
【问题描述】:
我正在尝试编写一个返回第 n 个素数的方法。
我已经找到了解决方案,但问题出在我的方法上。我创建了大量似乎处理速度非常慢的数字。 (1..104729).to_a 确切地说。我选择 104729 是因为 n 的最大值可以是 10000,而第 10000 个整数是 104729。我正在寻找一种方法来优化我的方法。
104729 的值是否太大?有没有办法写这个,这样我就不会创建一个大数组?
方法如下:
def PrimeMover(num)
def is_prime(x)
i = 0
nums = (2..x).to_a
while nums[i] < nums.max
if x % nums[i] != 0
i += 1
else
return false
end
end
return true
end
primes_arr = (3..104729).to_a.select {|y| is_prime(y)}
primes_arr[num]
end
【问题讨论】: