如何优化以下方法

时间:2016-07-26 00:24:09

标签: ruby optimization

我正在使用ruby,我的想法是创建一个方法,将所有素数添加到给定值以下。我现在的工作原理,但是当我使用像1000万这样的更大数字时,它需要永远运行。我想知道是否有一种方法可以优化下面的代码,使其运行速度更快,即使有这么大的数字

def self.sum_to(limit)
  primes = (2..limit).select do |n|
    (2..Math.sqrt(n)).none? do |i|
       (n % i).zero?
    end
  end

  sum = primes.reduce(:+)
end

puts Primes.sum_to(10000000)

1 个答案:

答案 0 :(得分:2)

Ruby 1.9有一个你可以使用的内置Prime类:

require 'prime'
Prime.take_while{|p| p < limit}.reduce(:+)