each(upper_bound = nil, generator = EratosthenesGenerator.new) {|prime| ... } -> object
[permalink][rdoc][edit]each(upper_bound = nil, generator = EratosthenesGenerator.new) -> Enumerator
-
全ての素数を順番に与えられたブロックに渡して評価します。
- [PARAM] upper_bound:
- 任意の正の整数を指定します。列挙の上界です。 nil が与えられた場合は無限に列挙し続けます。
- [PARAM] generator:
- 素数生成器のインスタンスを指定します。
- [RETURN]
- ブロックの最後に評価された値を返します。ブロックが与えられなかった場合は、Enumerator と互換性のある外部イテレータを返します。
require 'prime' Prime.each(6){|prime| prime } # => 5 Prime.each(7){|prime| prime } # => 7 Prime.each(10){|prime| prime } # => 7 Prime.each(11){|prime| prime } # => 11
require 'prime' Prime.each(30).each_cons(2).select{|p,r| r-p == 2} #=> [[3, 5], [5, 7], [11, 13], [17, 19]]
注
このメソッドに、真の素数列でない擬似素数を与えるべきではありません。
このメソッドは、素数列の外部イテレータを内部イテレータに変換してRubyらしいプログラミングを提供することが責務です。独自に素数性の保障するのはメソッドの責務ではありません。従って、次のように精度の低い素数生成器を与えると、真に素数とは限らない数列が発生します。
require 'prime' Prime.each(50, Prime::Generator23.new) do |n| p n #=> [2, 3, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47, 49] end
[SEE_ALSO] Prime.each, Prime::EratosthenesGenerator, Prime::TrialDivisionGenerator, Prime::Generator23