素数生成とは? わかりやすく解説

素数生成

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/10/16 13:48 UTC 版)

Guarded Horn Clauses」の記事における「素数生成」の解説

エラストテネスのふるいを使い素数生成を行うプログラム例を示す。 gen_primes(Max,Primes) :- gen(2,Max,Ns), sift(Ns,Primes). gen_primes/2を実行すると、gen/3とsift/2の2つプロセス生成される。gen/3はMaxまでの自然数ストリーム生成し、sift/2はそれをふるいにかけ素数ストリームをPrimesに返す。gen/3とsift/2とはそれぞれ並行して動き、gen/3で生成され自然数ストリーム変数Nsを介して順次sift/2に渡されるプロセス間の同期は、ストリーム各要素具体化されるまで待つ、という形で自然に表現される。 gen/3、sift/2の各プログラムそれぞれ以下のようになる。gen/3は、自然数ストリーム順次生成しMax超えた終了する。sift/2は、2,3,5,7,..などの各素数倍数ストリームから取り除くfilterプロセス(ふるい)を順に生成しながら、求まった素数順次ストリーム要素として返す。各filterプロセス変数を介して直列繋がれいくため自然数ストリームから素数のみのストリーム求めることができる。 gen(N0,Max,Ns0) :- N0=Max | Ns0=[].sift([Prime|Xs1],Zs0) :- Zs0=[Prime|Zs1], filter(Prime,Xs1,Ys), sift(Ys,Zs1).sift([], Zs0) :- Zs0=[].filter(Prime,[X|Xs1],Ys0) :- X mod Prime=\=0 | Ys0=[X|Ys1], filter(Prime,Xs1,Ys1).filter(Prime,[X|Xs1],Ys0) :- X mod Prime=:=0 | filter(Prime,Xs1,Ys0).filter(_, [], Ys0) :- Ys0=[].

※この「素数生成」の解説は、「Guarded Horn Clauses」の解説の一部です。
「素数生成」を含む「Guarded Horn Clauses」の記事については、「Guarded Horn Clauses」の概要を参照ください。


素数生成

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/12 22:09 UTC 版)

Concurrent Prolog」の記事における「素数生成」の解説

エラストテネスのふるいを使い素数生成を行うプログラム例を示す。 gen_primes(Max,Primes) :- integers(2,Max,Ns), sift(Ns?,Primes). gen_primes/2を実行すると、integers/3とsift/2の2つプロセス生成される。integers/3はMaxまでの自然数ストリーム生成し、sift/2はそれをふるいにかけ素数ストリームをPrimesに返す。integers/3とsift/2とはそれぞれ並行して動き、integers/3で生成され自然数ストリーム変数Nsを介して順次sift/2に渡される読み出し専用標記により変数Nsによるintegers/3からsift/2へのデータフロー方向表現されプロセス間の同期ストリーム各要素具体化されるまで待つという形で自然に表現される。 integers/3、sift/2の各プログラムそれぞれ以下のようになる。integers/3は、自然数ストリーム順次生成しMax超えた終了する。sift/2は、2,3,5,7,..などの各素数倍数ストリームから取り除くfilterプロセス(ふるい)を順に生成しながら、求まった素数順次ストリーム要素として返す。各filterプロセス変数を介して直列つながれいくため自然数ストリームから素数のみのストリーム求めることができる。 integers(N0,Max,[N0|Ns1]) :- N0=Max | true.sift([Prime|Xs1],[Prime|Zs1]) :- filter(Prime,Xs1?,Ys), sift(Ys?,Zs1).sift([], []).filter(Prime,[X|Xs1],[X|Ys1]) :- 0 is X mod Prime | filter(Prime,Xs1?,Ys1).filter(Prime,[X|Xs1],Ys0 ) :- otherwise | filter(Prime,Xs1?,Ys0).filter(_, [], []).

※この「素数生成」の解説は、「Concurrent Prolog」の解説の一部です。
「素数生成」を含む「Concurrent Prolog」の記事については、「Concurrent Prolog」の概要を参照ください。


素数生成

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/15 05:03 UTC 版)

RSA暗号」の記事における「素数生成」の解説

桁数大き場合確実に素数であると保証できる整数を見つけることは容易ではないこのため実際には、素数であるとは断言できないものの、素数である可能性が非常に高い自然数用いる。こういった自然数生成Miller–Rabinテストなどの確率的素数判定法によって高速行える。確率的素数判定法パスした自然数確率的素数 (probable prime) という。確率的素数には、素数の他に擬素数含まれるが、その確率判定回数増やすことで極めて低くすることができる。 (なお、拡張リーマン予想正しければMiller–Rabinテスト素数かどうか正しく判定するという事実が知られている)。 2002年8月インド工科大学 のアグラワルらが素数判定多項式時間で行うAKS素数判定法発表したが、これは多項式の次数が高すぎて遅いので未だRSA鍵生成実用するには足らない

※この「素数生成」の解説は、「RSA暗号」の解説の一部です。
「素数生成」を含む「RSA暗号」の記事については、「RSA暗号」の概要を参照ください。

ウィキペディア小見出し辞書の「素数生成」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「素数生成」の関連用語

素数生成のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



素数生成のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのGuarded Horn Clauses (改訂履歴)、Concurrent Prolog (改訂履歴)、RSA暗号 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS