Je fais un projet qui nécessite de très gros nombres, jusqu'à 100 chiffres. J'ai lu que Java supporte les grands entiers (Java.Math.BigInteger
), et je veux savoir s'il y a quelque chose comme ça en C++. Alors, voici ma question: existe-t-il une bibliothèque c ++ standard ou non standard qui implémente de grands entiers?
Note: S'il n'y a pas d'implémentation standard pour les grands entiers, je voudrais un simple non standard. Merci d'avance.
La bibliothèque GNU Multiple Precision Arithmetic Library fait ce que vous voulez http://gmplib.org/
Gnu MP est une bibliothèque C mais elle a une interface de classe C++ et si vous n'êtes intéressé que par les grands entiers, vous pouvez simplement traiter avec mpz_class
. Regardez l'exemple ci-dessous que j'ai pris dans la 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;
}
Malheureusement, il n'y a pas de bibliothèque standard pour les grands nombres. Vous avez dit que vous recherchez une bibliothèque "simple", la bibliothèque la plus simple que je connaisse est InfInt . Il se compose d'un seul fichier d'en-tête. Son utilisation est assez simple. Voici un exemple de code:
InfInt myint1 = "15432154865413186646848435184100510168404641560358";
InfInt myint2 = 156341300544608LL;
myint1 *= --myint2 - 3;
std::cout << myint1 << std::endl;
Vous avez dit que vous vouliez une interface/implémentation simple, en voici une http://www.di-mgt.com.au/bigdigits.html . Personnellement, je choisirais toujours GMP.