c ++中的大数字库

时间:2012-10-20 11:45:57

标签: c++ biginteger

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

注意:如果大整数没有标准实现,我希望简单非标准。提前谢谢。

4 个答案:

答案 0 :(得分:25)

GNU多精度算术库可以执行您想要的http://gmplib.org/

Gnu MP是一个C库,但它有一个C++ class Interface,如果你只对大整数感兴趣,你可以只处理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;
 }

答案 1 :(得分:10)

不幸的是,大数字没有标准库。你说你正在寻找一个“简单”的库,我所知道的最简单的库是InfInt。它只包含一个头文件。它的用法相当简单。以下是示例代码:

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

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

答案 2 :(得分:6)

你说你想要一个简单的界面/实现,这里只有一个http://www.di-mgt.com.au/bigdigits.html。就个人而言,我仍然会选择GMP。

答案 3 :(得分:0)

您将在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;
}