web-dev-qa-db-ja.com

C ++のビッグナンバーライブラリ

最大100桁の非常に大きな数字を必要とするプロジェクトを行っています。私はJavaは大きな整数(Java.Math.BigInteger)、C++にそのようなものがあるかどうかを知りたい。だから、ここに私の質問があります:大きな整数を実装する標準または非標準のc ++ライブラリはありますか?

注:大きな整数の標準実装がない場合は、simple非標準を使用します。前もって感謝します。

GNU Multiple Precision Arithmetic Libraryはあなたが望むことをします http://gmplib.org/

Gnu MPはCライブラリですが、 C++クラスインターフェイス があり、大きな整数のみに関心がある場合は、mpz_class。ページから取った以下のサンプルをご覧ください C++ Interface General

 int main (void)
 {
   mpz_class a, b, c;

   a = 1234;
   b = "-5678";
   c = a+b;
   cout << "sum is " << c << "\n";
   cout << "absolute value is " << abs(c) << "\n";

   return 0;
 }
28
saeedn

残念ながら、大きな数の標準ライブラリはありません。 「シンプルな」ライブラリを探していると言いましたが、私が知っている最もシンプルなライブラリは InfInt です。ヘッダーファイルは1つだけです。その使用法は非常に簡単です。サンプルコードを次に示します。

InfInt myint1 = "15432154865413186646848435184100510168404641560358";
InfInt myint2 = 156341300544608LL;

myint1 *= --myint2 - 3;
std::cout << myint1 << std::endl;
10
user2001885

あなたはシンプルなインターフェース/実装が必要だと言いましたが、ここに1つあります http://www.di-mgt.com.au/bigdigits.html 。しかし、個人的にはまだGMPに行きます。

6
john