Bibliothek für große Zahlen in C ++

Ich mache ein Projekt, das wirklich große Zahlen erfordert, bis zu 100 Ziffern. Ich habe gelesen, dass Java große Ganzzahlen ( java.Math.BigInteger ) unterstützt, und ich möchte wissen, ob es so etwas in C ++ gibt. Also, hier ist meine Frage: Gibt es eine Standard-oder Nicht-Standard-C ++ – Bibliothek, die große Ganzzahlen implementiert?

Hinweis: Wenn es keine Standardimplementierung für große Ganzzahlen gibt, möchte ich einen einfachen Nicht-Standard haben. Danke im Voraus.

Die GNU Multiple Precision Arithmetic Library macht, was Sie wollen http://gmplib.org/

Gnu MP ist eine C-Bibliothek, aber es hat eine C ++ – classnschnittstelle und wenn Sie nur an großen Ganzzahlen interessiert sind, können Sie einfach mit mpz_class . Sehen Sie sich das Beispiel an, das ich von der Seite C ++ Interface General genommen habe

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

Leider gibt es keine Standardbibliothek für große Zahlen. Sie sagten, Sie suchen nach einer “einfachen” Bibliothek, die einfachste Bibliothek, die ich kenne, ist InfInt . Es besteht aus nur einer Header-Datei. Seine Verwendung ist ziemlich einfach. Hier ist ein Beispielcode:

 InfInt myint1 = "15432154865413186646848435184100510168404641560358"; InfInt myint2 = 156341300544608LL; myint1 *= --myint2 - 3; std::cout < < myint1 << std::endl; 

Sie sagten, Sie wollen eine einfache Schnittstelle / Implementierung, hier ist eine http://www.di-mgt.com.au/bigdigits.html . Persönlich würde ich jedoch immer noch für GMP gehen.

Sie nehmen die Eingabe in ein char-Array und ändern sie dann in ein int-Array. Die Größe des Arrays kann ebenfalls geändert werden.

 #include 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; }