Библиотека больших чисел в С++ - программирование
Подтвердить что ты не робот

Библиотека больших чисел в С++

Я делаю проект, который требует действительно больших чисел, до 100 цифр. Я прочитал, что java поддерживает большие целые числа (java.Math.BigInteger), и я хочу знать, есть ли что-то подобное в С++. Итак, вот мой вопрос: есть ли стандартная или нестандартная библиотека С++, которая реализует большие целые числа?

Примечание: Если стандартной реализации для больших целых чисел нет, я бы хотел просто нестандартный. Спасибо заранее.

4b9b3361

Ответ 1

Библиотека многоточечной арифметики GNU делает то, что вы хотите http://gmplib.org/

Gnu MP является библиотекой C, но имеет интерфейс класса С++, и если вас интересуют только большие целые числа, вы можете просто иметь дело с mpz_class. Посмотрите на образец ниже, который я взял на странице Общий интерфейс С++

 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

К сожалению, нет стандартной библиотеки для больших чисел. Вы сказали, что ищете "простую" библиотеку, самая простая из известных мне библиотек - InfInt. Он состоит только из одного заголовочного файла. Его использование довольно просто. Вот пример кода:

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

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

Ответ 3

Вы сказали, что хотите простой интерфейс/реализацию, здесь http://www.di-mgt.com.au/bigdigits.html. Лично я все равно буду идти на GMP.

Ответ 4

Вы будете вводить ввод в массив 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;
}