9

メルセンヌ素数を見つけるプログラムを作成しようとしています。unsigned long long 型を使用して、(2^61)-1 である 9 番目のメルセンヌ素数の値を特定できました。より大きな値の場合、2^64 より大きい整数値を格納できるデータ型が必要になります。

、、、、など*の演算子をこのデータ型で*=使用できるはずです。><%

4

6 に答える 6

8

C ネイティブの型でやりたいことはできませんが、GNU Multiple Precision Arithmetic Library のように、任意に大きな数を処理できるライブラリがあります。

于 2013-03-24T17:14:14.603 に答える
6

多数の数値を格納するには、多くの選択肢があります。以下に優先度の低い順に示します。

1)上記の言語、つまりCに対して、github、codeflexなどで他の人が開発したサードパーティのライブラリを使用します.

2) 組み込みの多数の処理機能を持つ Python、BigNum をサポートする Java、または C++ などの他の言語に切り替えます。

3) 独自のデータ構造を開発します。これは、C++ の複素数ライブラリがこのように開発されたのと同じように、加算、減算、乗算などのカスタム操作を使用して、文字列 (100 文字の長さは 100 桁の数字を指す場合があります) の観点から作成できます。 . この選択は、研究および教育目的のためのものです。

于 2013-03-24T17:18:34.667 に答える
4

これらの人々が基本的に言っていることは、64ビットCPUは命令だけでこれらの巨大な数を追加することはできず、それらの数を追加できるアルゴリズムが必要だということです. このようなアルゴリズムでは、2 つの数値を別々に処理する必要があります。

そして、彼らがリストしたライブラリを使用すると、それを行うことができます。自分で開発することをお勧めします(アルゴリズム/関数だけで、それがどのように行われるかを学ぶことができます)。

于 2013-03-24T17:22:48.043 に答える
3

64 ビットを超えるデータ型を持つ標準的な方法はありません。システムのドキュメントを確認する必要があります。一部のシステムでは 128 ビット整数が定義されています。ただし、実際に柔軟なサイズの整数を使用するには、たとえば配列を使用して、別の表現を使用する必要があります。次に、演算子=<>などを定義するのはあなた次第です。

幸いなことに、 GMPなどのライブラリでは、任意の長さの整数を使用できます。

于 2013-03-24T17:15:23.420 に答える
2

GNU MP Bignum Libraryを見てください。

于 2013-03-24T17:14:06.690 に答える