我在 RubyPrime.new
的mathn
库中找到了。我用它来为一个问题生成质数。我想使用 . 遍历 1 到 1000 之间的所有素数Primes.new
。有没有办法Prime.new
在for
循环中使用或以某种方式迭代素数?
问问题
330 次
2 回答
1
这是一种雄辩的处理方式。
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
PSPrime.new
似乎已经过时了。
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...>>
于 2012-10-25T23:10:45.293 回答
1
您还可以像这样获得 n 个第一个质数:
Prime.each(100) do |prime|
p prime #=> 2, 3, 5, 7, 11, ...., 97
end
参见:http ://www.ruby-doc.org/gems/docs/b/backports-2.6.1/Prime.html
编辑:要获得高于给定值的 n 个第一个素数,我会这样做(这是一个草稿)
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]
于 2012-10-25T23:12:38.083 回答