1

Maple 14には、数値が素数であるかどうかをテストするisprimeコマンドがあります。次のコマンドを書くことができるように、入力データとして式を書くことができます:

isprime(2 ^(3 ^ 43-5)-1);

しかし、テストを実行しようとすると、次のエラーが発生します。

エラー、数値例外:オーバーフロー

だから私の質問は、このオーバーフローエラーを回避する方法ですか?デフォルトのスタックサイズを変更する必要がありますか?変更した場合、win 7 Ultimateでそれを行う方法は?

4

1 に答える 1

1

3^43-5 は合成なので、2^(3^43-5)-1 も合成です。メルセンヌ素数に関するウィキペディアのページを参照してください。Maple では、この結果をすばやく取得できます。それで、それがあなたが望んでいたすべてなら、あなたは終わりです。

> isprime( 3^43-5 );
                         false

ここで、3^43 に匹敵するサイズの素数 p があるとします。それよりも高い次の素数を考えてみましょう。

nextprime( 3^43-5 );
                 328256967394537077679

numtheory[mersenne]( nextprime( 3^43-5 ) );
                          FAIL

わかりました、それはあまりにも残念です。

isprime2^(10^6+3)-1 に適用してみてください。(通常の maple 手続きの評価規則により、isprimeは展開された引数を取得するため、特別な形式を確認する機会がなく、10^6+3 に対してのみ安価なテストを行うことができます。それnumtheory[mersenne]が目的です。) しばらくお待ちください。isprimeここで、約 10^11 倍の大きさの数値を処理するのにかかる時間を想像してみてください2^nextprime(3^43-5)-1

于 2011-09-29T01:43:42.710 に答える