Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::BNクラス > prime_fasttest?

instance method OpenSSL::BN#prime_fasttest?

prime_fasttest?(checks=nil, vtrivdiv=true) -> bool[permalink][rdoc]

自身が素数であるなら真を返します。

vtrivdiv が真である場合には、 Miller-Rabin 法での 判定の前に小さな素数で割ることで素数か否かを 調べます。自身が小さな素数である場合にはこの手順 により素数ではないと誤った返り値を返します。

Miller-Rabin 法により確率的に判定します。 checksで指定した回数だけ繰り返します。 checksがnilである場合は OpenSSL が適切な 回数を判断します。

例:

require 'openssl'

# 181 は 「小さな素数」である
OpenSSL::BN.new("181").prime_fasttest?(nil, true) # => false
OpenSSL::BN.new("181").prime_fasttest?(nil, false) # => true
[PARAM] checks:
Miller-Robin法の繰り返しの回数
[PARAM] vtrivdiv:
真なら小さな素数で割ることでの素数判定を試みます
[EXCEPTION] OpenSSL::BNError:
判定時にエラーが発生

[SEE_ALSO] OpenSSL::BN#prime?