BIBLIOTHÈQUE DE GESTION DE GRANDS NOMBRES POSITIFS

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 17 janv. 2008 à 23:17
cs_Shooter74 Messages postés 2 Date d'inscription dimanche 18 mai 2008 Statut Membre Dernière intervention 23 novembre 2008 - 23 nov. 2008 à 00:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45451-bibliotheque-de-gestion-de-grands-nombres-positifs

cs_Shooter74 Messages postés 2 Date d'inscription dimanche 18 mai 2008 Statut Membre Dernière intervention 23 novembre 2008
23 nov. 2008 à 00:54
j'ai 4 Go de ram, donc pas de problème de ce côté là

Si je teste avec 100000000000000 ça ne compile pas, car le type int ne peut pas contenir de nombre aussi grand... donc quel intérêt de faire une lib si on ne peut pas gérer des nombres plus grands que les types d'origine ?
mehdi7604 Messages postés 118 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 6 mars 2015
22 nov. 2008 à 19:38
Je pense que t'as pas bien compri la source ,, je ne représente pas le " Grand Nombre " avec un int ,, mais avec une file ... je ne me rappelle pas pkoi j'ai utilisé un int, pke ça fait longtemps que j'ai ecrit ce code ,, mais c'est utile , normalement la longueur d'un "entier" doit tenir non pas seulement sur 10000 chiffres mais ,, la limite de ta RAM .
cs_Shooter74 Messages postés 2 Date d'inscription dimanche 18 mai 2008 Statut Membre Dernière intervention 23 novembre 2008
22 nov. 2008 à 17:23
comment tu peux dire que c'est une lib de GRANDS entiers positifs si on fait la déclaration avec un int ????!?
Implémente la gestion des nombres comme si c'était des chaînes de caractères, pour qu'on puisse gérer des nombres avec 10 000 chiffres, et après, tu pourra dire que c'est de la gestion de GRANDS entiers.
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
18 janv. 2008 à 13:21
Une présentation de quelques algos de multiplication rapide:
http://algo.inria.fr/salvy/mpri/Cours2.pdf
mehdi7604 Messages postés 118 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 6 mars 2015
18 janv. 2008 à 00:14
Merci pour le commentaire ,

Bon les casde la mutiplication et les autres fonctions , je n'enavais pas besoin , j'avais besoin de cette biblio pour l'addition . mai sj'ai essayé de faire les autres , et j'ai prévu de les changer biensure , si tu peux me donner qqes noms d'algorithmes rapides comme Krastuba ,
oui tu as raison
merci
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
17 janv. 2008 à 23:17
Je prends par exemple la fonction * :

entier entier::operator*(entier a){
entier x(*this);
entier i=0;
entier val=x;
entier i_fin=a;
while(i<(i_fin-1)){
x=(x+val);
i=(i+1);
}
return x;
}


D'abord (et c'est le cas pour toutes tes fonctions) pourquoi créer 4 nouvelles instances d'entier alors qu'une seule (le résultat) suffit?

Ensuite concernant ta technique de multiplication : pour faire x*y tu te contentes de sommer x y fois? C'est une blague? Si les deux sont de l'ordre 10^20 (c'est jamais qu'un __int64) le prog va faire 10^20 fois la boucle? Sans parler de toutes les pertes de temps dues à l'orienté objet dans ce cas-ci : surcharge de < (appelé 10^20 fois quand même toujours...), etc. Le moins qu'on puisse attendre d'une bibliothèque de gestion des grands nombres c'est de proposer des algorithmes rapides pour les opérations de base; par exemple, pour la multiplication, Karatsuba ou FFT...

Enfin, bonne continuation.