LES OPÉRATIONS SUR LES GRANDS NOMBRES (100, 200 CHIFFRES)

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 12 sept. 2007 à 12:46
 Ahmonn - 5 mars 2016 à 14:32
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/44055-les-operations-sur-les-grands-nombres-100-200-chiffres

Merci !
Tes fonctions sont parfaites, mais il me semble que tu as oublié de déclarer toutes les valeurs utilisées, mais une fois déclarées, tout marche bien !

Ahmonn
peterigbinobaarmy Messages postés 4 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 13 mai 2009
13 mai 2009 à 12:22
Bonjour, je trouve ton programme audacieux et le sujet m'intéresse d'autant
plus que j'en ai fait un dans le même style avec une bonne complexité
temporelle, je me sers de la transformée de fourrier rapide (la version algébrique);
En fait je peux multiplier des nombres de n'importe quel taille, c'est juste une
question de temps et cela dépend surtout de la puissance du compilateur et de la bécanne.
J'en ai fait une application concrète avec un nombre à 2048 chiffres exprimé en base 65536.
Mon programme est sur caml, dis moi si ça t'intéresse.
ecarbill Messages postés 20 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 9 mars 2019
22 janv. 2008 à 14:03
Merci à Amghid2007 pour son commentaire. Je pense que j'ai trouvé l'origine du bug. En fait il se pose chaque fois que la somme du premier chiffre du premier nombre et celui du second nombre est supérieur à 10.
exemple (9+1) vous trouverai 0 au lieu de 10
(98+31) vous trouverai 29 au lieu de 129

Donc a chaque fois, il y a le 1 qui est enlevé. Pour corriger ce problème j'ai juste ajouter après la boocle DO While i<n le code suivant:
If (r > 9) Then Addition = "1" & Addition
Amghid2007 Messages postés 14 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 6 mars 2010
25 oct. 2007 à 21:38
salut...
chapeau !!!..j'avais l'idé depuis longtemps..mais pour la division c un peu compliqué
j'ai utiliser vos fonctions ça marche mais il y a un bug
99999999999999999999999999999999999999+1= 0 je ne sais pas pourquoi
dans l'ensemble ça marche a mervielle..
amghid l'amateur
rambc Messages postés 224 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 29 mars 2009
16 sept. 2007 à 12:43
L'algorithme de Karatsuba est une méthode simple et rapide pour la mutiplication : http://fr.wikipedia.org/wiki/Algorithme_de_Karatsuba.

Pour la division, c'est plus compliqué car la méthode scolaire peut être assez lente sur de grands nombres. Regardes ici par exemple : http://tima-cmp.imag.fr/~guyot/Cours/Arithmetique/pdffile/divis.pdf.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 sept. 2007 à 00:03
plein de sources similaires dans le coin, y'a surement la réponse
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
12 sept. 2007 à 12:46
Pour la division je crois qu'il faut que tu regarde du coté de l'opérateur mod (modulo). Enfin son fonctionnement quoi.
Sinon si tu veux un algorithme tu as celui de la division euclidienne (celle qu'on faisait à l'école primaire).