web-dev-qa-db-fra.com

Bibliothèque de grands nombres en c ++

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.

21

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;
 }
28
saeedn

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;
10
user2001885

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.

6
john