2017-09-08 1 views
0

私は素数を決定するために必要な2500桁の整数を持っています。 Rには小数の素数をテストするための多くのメソッドがありますが、言語は膨大な数の格納には適していないようです。そのような数字を保存するように設計されたパッケージがありますが、それらはすべて文字列で保存するようになっているので、どうやって素数テストを行うことができないのかがわかりません。このトピックに関して言語の能力がどのようなものであるかについての明確化は認められるであろう。Rの大きな整数の素数性をテストするにはどうすればよいですか?

+3

この作業を行うには、あなたがRに描かれているいずれかの特定の理由はありますか?私は個人的にRを愛していますが、これは私の最初の選択ではありません。 – MrFlick

+0

私はRの基礎を知っているからといって、私はそれをさらに理解しようとしています。もし私がこれに対して使うことができるより良い言語やツールがあれば、それはうまくいくでしょう。 –

+1

"それらはすべて文字列で保存することを中心に展開されているようです。あなたは通常、数字を文字列として入力する必要があります。 – Roland

答えて

1

巨大数の素数性をチェックするためのLucas-Lehmer Testを調べてください。既にメルセンヌ関数として数値ライブラリに入っており、getAnywhere関数を使って見ることができます。

library(numbers); getAnywhere(mersenne)

私は、あなたが実際にその大規模な数にそれを実行する予定がある場合はこのうちいくつかの余分な速度を圧迫するHaskellのかCythonをお勧めします - あなたはそれがうまくいけば、C/C++でとNOT Rで実行したいと思うでしょうこれにより、面白いRコードを読むことができます。

https://cran.r-project.org/web/packages/numbers/numbers.pdf

+1

彼の番号は必ずしもメルセンヌではないので、実際には役に立たない。 – thc

+0

このアルゴリズムは任意の数に適用することができますが、いくつかの再帰が必要です。また、ハスケルはRよりはるかによくフィットするでしょう。http://mathworld.wolfram.com/PrattCertificate.html –

+0

LucasとLucas-Lehmerのテストがあります。ルーカスは忙しい人だったし、ルーカスの数字、ルーカスのシーケンス、ルーカスの可能性のある素数テストなどもある。 Lucas-LehmerテストはMersenneの数値です。あなたが考えているLucasテストは、n-1を使って証明を行うことです。多くの重要な拡張を含む詳細については、1975 Brillhart-Lehmer-Selfridgeの論文を参照してください。 2500桁は巨大ではありませんが、この数が特にn +/- 1に適していない限り、APR-CLまたはECPPをこのサイズで使用します。 – DanaJ

関連する問題