Ruby 使用mathn中的primes.new迭代素数
我在Ruby的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 &
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]