Ruby 使用mathn中的primes.new迭代素数

Ruby 使用mathn中的primes.new迭代素数,ruby,for-loop,primes,Ruby,For Loop,Primes,我在Ruby的mathn库中找到了Prime.new。我用它来生成一个问题的素数。我想使用primes.new对1到1000之间的所有素数进行迭代。有没有办法在循环中使用Prime.new或以某种方式迭代Prime?这里有一个很好的方法来处理它 ruby-1.9.3-p194 :001 > require 'mathn' => true ruby-1.9.3-p194 :002 > Prime.each(1000) do |i| ruby-1.9.3-p194 :003 &

我在Ruby的
mathn
库中找到了
Prime.new
。我用它来生成一个问题的素数。我想使用
primes.new
对1到1000之间的所有素数进行迭代。有没有办法在
循环中使用
Prime.new
或以某种方式迭代Prime?

这里有一个很好的方法来处理它

ruby-1.9.3-p194 :001 > require 'mathn'
 => true

ruby-1.9.3-p194 :002 > Prime.each(1000) do |i|
ruby-1.9.3-p194 :003 >   puts i
ruby-1.9.3-p194 :004 > end
2
3
.
.
.
991
997
 => nil
另外,新的
似乎已经过时了

ruby-1.9.3-p194 :005 > Prime.new
Prime::new is obsolete. use Prime::instance or class methods of Prime.
 => #<Prime:0x0000010083ca10 @generator=#<Prime::EratosthenesGenerator...>> 
ruby-1.9.3-p194:005>Prime.new
新的已经过时了。使用Prime::Prime的实例或类方法。
=> # 

您还可以得到n个第一个素数,如下所示:

Prime.each(100) do |prime|
  p prime  #=> 2, 3, 5, 7, 11, ...., 97
end
cf:

编辑:为了得到n个高于给定值的第一个素数,我会这样做(这是一个草稿)

require'mathn'
def素数从开始算起,n
素数=[]
素数。每个(n)do |素数|
素数开始
结束
素数
结束
素数来自(10,30)
#返回=>[11,13,17,19,23,29]

指定一个起点如何?(假设一个高值开始?)这是完美的,下限无论如何都是1。非常感谢。
require 'mathn'

def prime_numbers_from start, n
  primes = []
  Prime.each(n) do |prime|
    primes << prime if prime > start
  end
  primes
end

prime_numbers_from(10, 30)
# returns => [11, 13, 17, 19, 23, 29]