加速Ruby中的数组函数

时间:2013-12-04 01:55:37

标签: ruby arrays

我有一个简单的方法可以找到素数,将它们放在一个数组中,然后将它们相加。有哪些可能的步骤来加快它的速度?

def prime?(number, array)
  array.each do |x|
    if number % x == 0
      return false
    end
  end
  true
end

def sum_prime(number)
  i = 0
  prime = 1
  output = [2]
  while prime < number
    if prime?(prime, output)
      i += 1
      output << prime if prime != 1
      p prime
    end 
    prime += 2
  end
  output.inject(:+)
end

sum_prime(200000)

array#each好吗?为了更快的结果,我可以不同地进行汇合吗?

1 个答案:

答案 0 :(得分:1)

这应该有效。它使用了其他人的建议:

require 'prime'
def sum_prime(limit)
  Prime.each(limit).inject(0) {|sum, num| sum + num}
end
puts sum_prime(200000)
相关问题