如何在Ruby中找到小于1000的所有素数之和?

时间:2015-03-30 09:47:11

标签: ruby-on-rails ruby

我是Ruby新手。我想知道如何得到1000以下所有素数的总和。下面的代码打印出1到1000之间的所有素数。

require 'prime'

p = Prime.new
(1..1000).each do |n|
  q = p.next()
  puts "#{n}: #{q}" 
end

如何找到这些素数的总和。感谢您的帮助

3 个答案:

答案 0 :(得分:1)

Prime.each(1000).inject :+
# => 76127 

答案 1 :(得分:1)

  

Prime.new已过时。现在Prime有默认实例,您可以将其作为Prime.instance访问。

     

为方便起见,Prime.instance的每个实例方法都可以作为Prime的类方法访问。

因此,您重构的主要打印代码将是:

Prime.each(1000).with_index { |p, i| puts "#{i+1}: #{p}" }
#=>
1: 2
2: 3
3: 5
4: 7
5: 11
...
...

找到总和

Prime.each(1000).reduce(:+)
#=> 76127

答案 2 :(得分:1)

这很简单:

Prime.each(1000).inject :+