在C大数字图书馆

我正在做一个项目,需要真正的大数字,最多100位数字。 我读过,Java支持大整数( java.Math.BigInteger ),我想知道是否有类似的东西在C + +。 所以,这里是我的问题:是否有一个标准或非标准的C ++库实现大整数?

注意:如果没有大整数的标准实现,我想要一个简单的非标准的。 提前致谢。

GNU多精度算术库做你想要的东西http://gmplib.org/

Gnu MP是一个C库,但它有一个C ++类接口 ,如果你只对大整数感兴趣,你可能只需要处理mpz_class 。 看看下面的示例,我从页面C ++接口一般

  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数组中进行input,然后将它改变成一个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; }