問題タブ [primality-test]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - Miller-Rabin 方式の実装で予測できない出力
私はSchemeが初めてです。PLTスキームを使用して、ラビンミラーアルゴリズムの確率的バリアントを試して実装しました。私はそれが確率的であることを知っていますが、ほとんどの場合、間違った結果を得ています。私は C を使用して同じことを実装しましたが、うまくいきました (試行に失敗したことはありません)。デバッグ中に期待どおりの出力が得られますが、実行すると、ほとんどの場合、間違った結果が返されます。Wikipediaのアルゴリズムを使用しました。
また、Scheme で正しい方法でプログラミングしていますか? (私が使用するループ部分の抜け出しについてはよくわかりませんcall/cc
。あるサイトで見つけて以来、それを使用しています。)
前もって感謝します。
haskell - Haskell の学習: 一見循環的なプログラム - 説明を手伝ってください
私は現在、Doets と Van Eijck による「The Haskell Road to Logic, Math, and Programming」という本を読んでいます。私はこの本まで関数型プログラミング言語に触れたことがないので、覚えておいてください。
本のまだ早い段階で、素数性テストの次のコードが提供されます。
ldp が primes1 を呼び出し、それが prime を呼び出し、それが ldp を再度呼び出すという、一見循環的なプログラミングが行われています。この本は、プログラムが実行されて終了する理由についての説明としてこれを提供していますが、
ldp は、素数のリストである primes1 を呼び出します。これは「怠惰なリスト」の最初の例です。リストは、さらに処理するために必要なリストの部分のみを計算するため、「レイジー」と呼ばれます。primes1 を定義するには、素数性のテストが必要ですが、そのテスト自体が関数 LD の観点から定義されており、これが primes1 を参照します。輪になって走り回っているようです。この円は、2 の素数性テストを回避することで非悪性にすることができます。2 が素数であることが与えられた場合、3 が素数であるという LD チェックで 2 の素数性を使用できます。そして走っている
私はこの説明を理解していると思いますが、誰かが素人の言葉で説明できれば非常にありがたいです:
- 「怠惰なリスト」とは何ですか?また、このコンテキストでどのように適用されますか?
- 2 が素数であることを知っていると、どのようにしてプログラムが悪意を持たなくなるのでしょうか?
どんな答えでも大歓迎です。
algorithm - ミラーラビンで混乱
私自身の演習として、ミラーラビン素検定を実装しています。(SICPを介した作業)。私はフェルマーの小定理を理解し、それをうまく実行することができました。ミラーラビン素検定で私がつまずくのは、この「1modn」ビジネスです。1 mod n(nはランダムな整数)は常に1ではありませんか?ですから、整数値を扱うとき、私の考えでは「1 mod n」は常に1であるため、「nを法とする1の自明でない平方根」が何であるかについて混乱しています。私は何が欠けていますか?
algorithm - 指定された数値が haskell の素数かどうかを判断する
そのため、特定の数値が Haskell で素数であるかどうかを確認するために、次の関数を考案しました (最初の素数が 2 であると想定しています)。
いくつかの数で割り切れる場合でも、評価を継続するという明らかな落とし穴があります:(。リスト内包表記を使用して、複数の解が見つかったときに評価を「カット」する適切な方法はありますか?
また、他にどの実装を試しますか? 私はここでパフォーマンスを探しているわけではありません。同じことを行う他の「ハスケル」の方法があるかどうかを確認しようとしているだけです。
algorithm - 素数の平方根を調べて、それが素数であるかどうかを判断するのはなぜですか?
数が素数であるかどうかをテストするには、なぜその数の平方根までしか除算できないかどうかをテストする必要があるのでしょうか。
c++ - スキームまたはC++でのAKS素数性テストの実装
私は素数テストアルゴリズムについて読んでいて、AKS素数性テストを見つけました。このアルゴリズムはSchemeまたはC++で実装できますか?
誰かがAKSテストを実装しようとしましたか?
c++ - 128 ビット Miller Rabin 素数テスト
ミラー・ラビン素数検定を大量に実装したかったのです。C++ でこのような膨大な数を処理する方法を知りたかったのです。これらの大きな数を保存および処理する特別な関数を作成する必要がありますか?そうしないと、自動的に処理されますか?
primes - 10^n + k 形式の数の素数判定
Nは約1000で、K は非常に小さい (500 未満)。これらの数値の素数をテストしたいと思います。現在、私はベース 2 によるフェルマーの検定を使用しており、その前に小さな因子 (<10000) をチェックしています。
ただし、これは私の目的にはかなり遅いです。それより速いアルゴリズムはありますか?この特殊なフォームをどうにか悪用することはできますか?
また、2 つの数値が K のみ異なる場合、これら 2 つの数値をもう少し早くテストすることは可能でしょうか?
c++ - 多数が素数であるか合成数であるかを決定論的にチェックしますか?
大きな(10 200のような)数を素数性テストするアルゴリズムを探しています。良いアルゴリズムはありますか?
理想的には、確率論的ではないアルゴリズムを好みます。
注:数字は50桁以上200桁未満です。
c++ - 大きな数字はどうですか?(素数性テスト)
これは「実際の」タスクであり、任意の言語(C / C ++など)で記述できますか?
だから、私の仕事は50桁を超える長さの乱数を「生成」することです(最大= 200)?
次に、素数性テストでこの数を確認する必要があります。
それで、このタスクは「本物」であり、どれだけの時間/リソースを消費するのでしょうか?
別の方法は、特別なクラスから素数または他の数を生成することです(どのクラスを使用できますか?)