37

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

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

4

4 に答える 4

34

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;
 }
于 2012-10-20T11:53:49.903 に答える
14

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

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

myint1 *= --myint2 - 3;
std::cout << myint1 << std::endl;
于 2013-05-28T21:32:11.077 に答える
-1

入力を char 配列で受け取り、それを int 配列に変更します。配列のサイズも変更できます。

#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
    int b, i, arrayint[100];
    char arraychar[100];

    for(i = 0; i < 100; i++)
        cin >> arraychar[i];

    for(i = 0; i < 100; i++)
        cout << arraychar[i];

    cout << endl;

    for(i = 0; i < 100; i++)
        arrayint[i] = arraychar[i] - '0';

    for(i = 0; i < 100; i++)
        cout << arrayint[i];

    return 0;
}
于 2016-02-20T18:28:04.600 に答える