Big numbers library in c++ [closed]

爷,独闯天下 提交于 2019-12-17 02:24:30

问题


I'm doing a project which requires really big numbers, up to 100 digits. I have read that java supports big integers (java.Math.BigInteger), and I want to know if there is something like that in C++. So, here is my question: Is there a standard or non-standard c++ library which implements big integers?

Note: If there is no standard implementation for big integers, I would like a simple non-standard. Thanks in advance.


回答1:


The GNU Multiple Precision Arithmetic Library does what you want http://gmplib.org/

Gnu MP is a C library but it has a C++ class Interface and if you are interested only in big integers, you may just deal with mpz_class. Look at the sample below which I took from the page 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;
 }



回答2:


Unfortunately, there is no standard library for big numbers. You said you are looking for a "simple" library, the simplest library I know of is InfInt. It consists of just one header file. Its usage is fairly simple. Here is a sample code:

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

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



回答3:


You said you want a simple interface/implementation, here's one http://www.di-mgt.com.au/bigdigits.html. Personally I'd still go for GMP however.




回答4:


You will be taking input in a char array, and then will change it into an int array. The size of array can also be changed.

#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;
}


来源:https://stackoverflow.com/questions/12988099/big-numbers-library-in-c

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!