[解決済み] BigIntegerの.isProbablePrime()の使用例としてはどのようなものがありますか?
2023-05-22 20:47:41
質問
メソッド
BigInteger.isProbablePrime()
は非常に奇妙です。ドキュメントによると、これはある数字が素数かどうかを確率的に
1 - 1 / 2^arg
ここで
arg
は整数の引数である。
これはかなり長い間JDKに存在しているので、用途があるに違いないということです。コンピューター サイエンスとアルゴリズム (および数学) の私の限られた知識では、ある数字が「おそらくは素数だが、正確には素数ではない」かどうかを知ることは、実際には意味をなさないということがわかります。
では、この方法を使いたいと思うようなシナリオはどのようなものでしょうか?暗号技術ですか?
どのように解決するか?
はい、この方法は暗号技術に利用することができます。 RSA暗号 では、1024ビット(約300桁)もの巨大な素数を見つけることが必要です。 RSAの安全性は、この素数を2つ掛け合わせた数の因数分解が非常に困難で時間がかかるという事実に依存しています。 しかし、それが機能するためには、それらが素数でなければならないのです。
これらの数が素数であることを証明することも難しいことがわかりました。 しかし、その
ミラー・ラビン一次性検定
で使われる一次性検定の一つである
isProbablePrime
は、数が合成であることを検出するか、 あるいは何も結論を出しません。 このテストを実行すると
n
を何度も実行すると、2 分の 1 の
n
の確率で、この数字が本当に合成されたものであると結論づけることができます。 それを実行すると
100
回実行すると、許容できるリスクは 2 分の 1 になります。
100
となります。
関連
-
アノテーション「@Retention」の役割
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Javaでよくある構文エラー
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
プロジェクトの依存関係を解決できない。
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
maven レポート エラー 解決不可能な親POM
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
htmlとwordの相互変換の実装(画像あり)