这是项目欧拉问题之一的(相当糟糕的)解决方案。问题是要找到第 10_001 个素数。下面的代码做到了,但运行需要 8 分钟。你能解释一下为什么会这样以及如何优化它吗?
primes = []
number = 2.0
until primes[10000] != nil
if (2..(number - 1)).any? do |n|
number % n == 0
end == false
primes << number
end
number = number + 1.0
end
puts primes[10000]