Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > primeライブラリ > Primeクラス
クラスの継承リスト: Prime < Enumerable < Object < Kernel < BasicObject
素数全体を表します。
Prime クラスはシングルトンであると考えてください。Prime クラスはデフォルトのインスタンスを持っており、ユーザーはそのインスタンスを利用すべきです。 Prime.instance によってそのインスタンスを取得できます。
過去との互換性のために Prime.new も残っています。このメソッドは非推奨ですので、新しいプログラムでは利用しないでください。
なお、利便性のためにデフォルトインスタンスのメソッドをクラスメソッドとしても利用できます。
例:
Prime.instance.prime?(2) #=> true Prime.prime?(2) #=> true
instance -> Prime
[permalink][rdoc]Prime のデフォルトのインスタンスを返します。
new -> Prime
[permalink][rdoc]過去との互換性のためのメソッドです。新しいプログラムでは Prime.instance やクラスメソッドを利用してください。
このメソッドが返すインスタンスは、デフォルトのインスタンスとは違ってPrime::OldCompatibility で拡張されています。
each(upper_bound = nil, generator = EratosthenesGenerator.new) {|prime| ... } -> object
[permalink][rdoc]each(upper_bound = nil, generator = EratosthenesGenerator.new) -> Enumerator
全ての素数を順番に与えられたブロックに渡して評価します。
Prime.each(6).each{|prime| prime } # => 5 Prime.each(7).each{|prime| prime } # => 7 Prime.each(10).each{|prime| prime } # => 7 Prime.each(11).each{|prime| prime } # => 11
Prime.each(30).each_cons(2).select{|p,r| r-p == 2} #=> [[3, 5], [5, 7], [11, 13], [17, 19]]
このメソッドに、真の素数列でない疑似素数を与えるべきではありません。
このメソッドは、素数列の外部イテレータを内部イテレータに変換してRubyらしいプログラミングを提供することが責務です。独自に素数性の保障するのはメソッドの責務ではありません。従って、次のように精度の低い素数生成器を与えると、真に素数とは限らない数列が発生します。
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::EratosthenesGenerator, Prime::TrialDivisionGenerator, Prime::Generator23
int_from_prime_division(pd) -> Integer
[permalink][rdoc]素因数分解された結果を元の数値に戻します。
引数が [[p_1, e_1], [p_2, e_2], ...., [p_n, e_n]] のようであるとき、 結果は p_1**e_1 * p_2**e_2 * .... * p_n**e_n となります。
例:
Prime.int_from_prime_division([[2,2], [3,1]]) #=> 12 Prime.int_from_prime_division([[2,2], [3,2]]) #=> 36
prime?(value, generator = Prime::Generator23.new) -> bool
[permalink][rdoc]与えられた整数が素数である場合は、真を返します。 そうでない場合は偽を返します。
[SEE_ALSO] Prime::EratosthenesGenerator, Prime::TrialDivisionGenerator, Prime::Generator23
prime_division(value, generator= Prime::Generator23.new) -> [[Integer, Integer]]
[permalink][rdoc]与えられた整数を素因数分解します。
例:
Prime.prime_division(12) #=> [[2,2], [3,1]] Prime.prime_division(10) #=> [[2,1], [5,1]]
[SEE_ALSO] Prime::EratosthenesGenerator, Prime::TrialDivisionGenerator, Prime::Generator23