Библиотека больших чисел в С++
Я делаю проект, который требует действительно больших чисел, до 100 цифр. Я прочитал, что java поддерживает большие целые числа (java.Math.BigInteger
), и я хочу знать, есть ли что-то подобное в С++. Итак, вот мой вопрос: есть ли стандартная или нестандартная библиотека С++, которая реализует большие целые числа?
Примечание: Если стандартной реализации для больших целых чисел нет, я бы хотел просто нестандартный. Спасибо заранее.
Ответы
Ответ 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;
}