我有一个简单的方法可以找到素数,将它们放在一个数组中,然后将它们相加。有哪些可能的步骤来加快它的速度?
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
好吗?为了更快的结果,我可以不同地进行汇合吗?
答案 0 :(得分:1)
这应该有效。它使用了其他人的建议:
require 'prime'
def sum_prime(limit)
Prime.each(limit).inject(0) {|sum, num| sum + num}
end
puts sum_prime(200000)