素数全体を表します。
Prime クラスはシングルトンであると考えてください。Prime クラスはデフォルトのインスタンスを持っており、ユーザーはそのインスタンスを利用すべきです。 Prime.instance によってそのインスタンスを取得できます。
なお、利便性のためにデフォルトインスタンスのメソッドをクラスメソッドとしても利用できます。
例:
require 'prime' Prime.instance.prime?(2) #=> true Prime.prime?(2) #=> true
each(upper_bound = nil, generator = EratosthenesGenerator.new) {|prime| ... } -> object
[permalink][rdoc]each(upper_bound = nil, generator = EratosthenesGenerator.new) -> Enumerator
Prime.instance.each と同じです。
[SEE_ALSO] Prime#each
instance -> Prime
[permalink][rdoc]Prime のデフォルトのインスタンスを返します。
int_from_prime_division(pd) -> Integer
[permalink][rdoc]Prime.instance.int_from_prime_division と同じです。
[SEE_ALSO] Prime#int_from_prime_division
prime?(value, generator = Prime::Generator23.new) -> bool
[permalink][rdoc]Prime.instance.prime? と同じです。
[SEE_ALSO] Prime#prime?
prime_division(value, generator= Prime::Generator23.new) -> [[Integer, Integer]]
[permalink][rdoc]Prime.instance.prime_division と同じです。
[SEE_ALSO] Prime#prime_division
each(upper_bound = nil, generator = EratosthenesGenerator.new) {|prime| ... } -> object
[permalink][rdoc]each(upper_bound = nil, generator = EratosthenesGenerator.new) -> Enumerator
全ての素数を順番に与えられたブロックに渡して評価します。
require 'prime' 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
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
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 となります。
例:
require 'prime' Prime.int_from_prime_division([[2,2], [3,1]]) #=> 12 Prime.int_from_prime_division([[2,2], [3,2]]) #=> 36
[SEE_ALSO] Prime.int_from_prime_division
prime?(value, generator = Prime::Generator23.new) -> bool
[permalink][rdoc]与えられた整数が素数である場合は、真を返します。そうでない場合は偽を返します。
[SEE_ALSO] Prime.prime?, Prime::EratosthenesGenerator, Prime::TrialDivisionGenerator, Prime::Generator23
prime_division(value, generator= Prime::Generator23.new) -> [[Integer, Integer]]
[permalink][rdoc]与えられた整数を素因数分解します。
例:
require 'prime' Prime.prime_division(12) #=> [[2,2], [3,1]] Prime.prime_division(10) #=> [[2,1], [5,1]]
[SEE_ALSO] Prime.prime_division, Prime::EratosthenesGenerator, Prime::TrialDivisionGenerator, Prime::Generator23