programas - Biblioteca de grandes números en c++
programas en c++ ejemplos avanzados pdf (4)
Desafortunadamente, no hay una biblioteca estándar para grandes números. Usted dijo que está buscando una biblioteca "simple", la biblioteca más simple que conozco es InfInt . Se compone de un solo archivo de cabecera. Su uso es bastante simple. Aquí hay un código de ejemplo:
InfInt myint1 = "15432154865413186646848435184100510168404641560358";
InfInt myint2 = 156341300544608LL;
myint1 *= --myint2 - 3;
std::cout << myint1 << std::endl;
Estoy haciendo un proyecto que requiere números realmente grandes, de hasta 100 dígitos. He leído que java es compatible con grandes enteros ( java.Math.BigInteger
), y quiero saber si hay algo así en C ++. Entonces, aquí está mi pregunta: ¿Existe una biblioteca de c ++ estándar o no estándar que implemente grandes enteros?
Nota: Si no hay una implementación estándar para enteros grandes, me gustaría una simple no estándar. Gracias por adelantado.
La biblioteca aritmética de precisión múltiple de GNU hace lo que usted quiere http://gmplib.org/
Gnu MP es una biblioteca de C, pero tiene una interfaz de clase C ++ y si solo está interesado en los enteros grandes, puede tratar con mpz_class
. Mire la muestra a continuación que tomé de la página 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;
}
Tomará entrada en una matriz de caracteres y luego la convertirá en una matriz int. El tamaño de la matriz también se puede cambiar.
#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;
}
Usted dijo que desea una interfaz / implementación simple, aquí hay uno http://www.di-mgt.com.au/bigdigits.html . Sin embargo, personalmente me gustaría ir a GMP.