LES OPÉRATIONS SUR LES GRANDS NOMBRES (100, 200 CHIFFRES)
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 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.
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és4Date d'inscriptionsamedi 11 février 2006StatutMembreDernière intervention13 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és20Date d'inscriptionmardi 11 janvier 2005StatutMembreDerniè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és14Date d'inscriptionvendredi 23 mars 2007StatutMembreDerniè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és224Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention29 mars 2009 16 sept. 2007 à 12:43
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 sept. 2007 à 00:03
plein de sources similaires dans le coin, y'a surement la réponse
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 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).
5 mars 2016 à 14:32
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
13 mai 2009 à 12:22
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.
22 janv. 2008 à 14:03
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
25 oct. 2007 à 21:38
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
16 sept. 2007 à 12:43
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.
13 sept. 2007 à 00:03
12 sept. 2007 à 12:46
Sinon si tu veux un algorithme tu as celui de la division euclidienne (celle qu'on faisait à l'école primaire).