Я делаю проект, который требует действительно больших цифр, до 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, а затем преобразуете его в массив 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;
}