我正在做一个需要非常大的数字的项目,最多 100 位数字。我读过java支持大整数(java.Math.BigInteger
),我想知道C++中是否有类似的东西。所以,这是我的问题:是否有实现大整数的标准或非标准 C++ 库?
注意:如果没有大整数的标准实现,我想要一个简单的非标准。提前致谢。
我正在做一个需要非常大的数字的项目,最多 100 位数字。我读过java支持大整数(java.Math.BigInteger
),我想知道C++中是否有类似的东西。所以,这是我的问题:是否有实现大整数的标准或非标准 C++ 库?
注意:如果没有大整数的标准实现,我想要一个简单的非标准。提前致谢。
GNU 多精度算术库可以满足您的需求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。它只包含一个头文件。它的用法相当简单。这是一个示例代码:
InfInt myint1 = "15432154865413186646848435184100510168404641560358";
InfInt myint2 = 156341300544608LL;
myint1 *= --myint2 - 3;
std::cout << myint1 << std::endl;
你说你想要一个简单的界面/实现,这里有一个http://www.di-mgt.com.au/bigdigits.html。不过,就我个人而言,我仍然会选择 GMP。
您将在 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;
}