web-dev-qa-db-fra.com

Comment stocker des nombres extrêmement importants?

Par exemple, j'ai un programme factoriel qui doit enregistrer des nombres entiers vraiment énormes qui peuvent faire plus de 50 chiffres. Le type de données primitif maximal absolu en C++ est unsigned long long int avec une valeur maximale 18446744073709551615 qui ne comporte que 20 chiffres. Voici le lien vers les limites du C++: http://www.cplusplus.com/reference/climits/

Comment est-ce que je stocke des nombres qui sont plus grands que cela dans une variable quelconque?

14
Oleksiy

Si vous avez déjà une dépendance de boost (ce que beaucoup de gens font de nos jours), vous pouvez utiliser le boost bibliothèque multi-précision . En fait, il a déjà un exemple de programme factoriel qui peut prendre en charge la sortie jusqu'à 128 bits, bien que son extension soit assez triviale.

15
user220878

Vous devrez utiliser une implémentation bigint ou bignum. Il existe des bibliothèques comme celle-ci: http://gmplib.org/

Quelques informations supplémentaires et une liste de bibliothèques: http://en.wikipedia.org/wiki/Bignum

7
Joe Junior

Vous pouvez utiliser un tableau. Vous devez d'abord copier ce tableau de nombres géants, puis utiliser une virgule après 19 chiffres:

unsigned long long int num[]= {
        7316717653133062491,9225119674426574742,3553491949349698352,0,312774506326239578,3180169848018694788,
        5184385861560789112,9494954595017379583,3195285320880551112,5406987471585238630,5071569329096329522,
        7443043557668966489,5044524452316173185,6403098711121722383,1136222989342338030,8135336276614282806,
        4444866452387493035,8907296290491560440,7723907138105158593,0,7960866701724271218,8399879790879227492,
        1901699720888093776,6572733300105336788,1220235421809751254,5405947522435258490,7711670556013604839,
        5864467063244157221,5539753697817977846,1740649551492908625,6932197846862248283,9722413756570560574,
        9026140797296865241,4535100474821663704,8440319989000889524,3450658541227588666,8811642717147992444,
        2928230863465674813,9191231628245861786,6458359124566529476,5456828489128831426,0,7690042242190226710,
        5562632111110937054,4217506941658960408,0,7198403850962455444,3629812309878799272,4428490918884580156,
        1660979191338754992,0,0,5240636899125607176,0,6058861164671094050,7754100225698315520,0,0,
        5593572972571636269,5618826704282524836,0,0,8232575304207529634,50};
4
A.Najafi

Il existe de nombreuses façons de stocker un très grand nombre qui sont ci-dessous:

  1. chaîne
  2. Fichier
  3. Liste de liens
  4. Tableau vectoriel/dynamique

Remarque: veuillez ne pas utiliser le tableau pour éviter les problèmes de mémoire.

0
Jitendra Rajput