私は、最大 100 桁の非常に大きな数を必要とするプロジェクトを行っています。Java が大きな整数 ( java.Math.BigInteger
) をサポートしていることを読みました。C++ にそのようなものがあるかどうか知りたいです。それで、ここに私の質問があります: 大きな整数を実装する標準または非標準の c++ ライブラリはありますか?
注:大きな整数の標準実装がない場合は、単純な非標準を希望します。前もって感謝します。
私は、最大 100 桁の非常に大きな数を必要とするプロジェクトを行っています。Java が大きな整数 ( java.Math.BigInteger
) をサポートしていることを読みました。C++ にそのようなものがあるかどうか知りたいです。それで、ここに私の質問があります: 大きな整数を実装する標準または非標準の c++ ライブラリはありますか?
注:大きな整数の標準実装がない場合は、単純な非標準を希望します。前もって感謝します。
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;
}
残念ながら、大きな数のための標準ライブラリはありません。あなたは「単純な」ライブラリを探していると言っていましたが、私が知っている最も単純なライブラリはInfIntです。1 つのヘッダー ファイルだけで構成されます。その使用法は非常に簡単です。サンプルコードは次のとおりです。
InfInt myint1 = "15432154865413186646848435184100510168404641560358";
InfInt myint2 = 156341300544608LL;
myint1 *= --myint2 - 3;
std::cout << myint1 << std::endl;
入力を 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;
}