begin process at 2012 02 16 11:23:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

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

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


 Information sur la source

Note :
Aucune note
Catégorie :Maths Classé sous :addittion, multiplication, soustraction, grands nombres, big numbers Niveau :Initié Date de création :12/09/2007 Date de mise à jour :22/01/2008 14:08:23 Vu :10 294

Auteur : ecarbill

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Qui n'a jamais été curieux de savoir comment faire une addittion, une soustraction, une multiplication avec des drands nombres ayant jusqu'à 200 chiffres ?
J'ai conçu ces fonctions pour le besoins d'un système de cryptage que je mettais sur place. Alors je le partage avec vous. J'attends toutes vos suggestions d'amélioration.
Un exemple d'utilisation avec :
a="123456789101112131415161718192021222324252327 2829303132333435363738394041"
b="12345678910111213 14151617181920212223242523272829303132333435363738 394041424344454647484950515253545556575859"

La multiplication de ces deux nombres donne:
Multiplication(a,b)="1524156877515647915714 74454067365843004073365192664386937438976036387454 84657603399539035812672176308539944896097790670852 90100257651497011735453700251937161627394225799459 650056219"
Soustraction(a,b)="-1234567891011121314 15161718192021222200795538181818181818181818181818 1818181821181818181818181818181818181818"

J'ai aussi besoin de faire de meme pour la division. Alors un coup de main sera le bienvenu

Source

  • Function DeleteZeroDebut(Texte As String) As String
  • 'Fonction utilisée pour éliminer les 0 au début d'un nombre
  • i = 0
  • DeleteZeroDebut = ""
  • ZeroDebut = True
  • Do
  • i = i + 1
  • If (Mid(Texte, i, 1) <> 0 And ZeroDebut = True) Then
  • ZeroDebut = False
  • End If
  • If (ZeroDebut = False) Then DeleteZeroDebut = DeleteZeroDebut & Mid(Texte, i, 1)
  • Loop While i < Len(Texte)
  • If (DeleteZeroDebut = "") Then DeleteZeroDebut = 0
  • End Function
  • Function EstSuperieur(Nombre1 As String, Nombre2 As String) As Boolean
  • 'Fonction utiliser pour comparer deux grands nombres
  • 'Equivalent de "Nombre1 > Nombre2"
  • Nombre1 = DeleteZeroDebut(Nombre1)
  • Nombre2 = DeleteZeroDebut(Nombre2)
  • EstSuperieur = True
  • 'Rechercher le plus grand
  • If Len(Nombre1) < Len(Nombre2) Then 'Cas ou les deux nombres ont le meme nombre de chiffre
  • EstSuperieur = False
  • ElseIf (Len(Nombre1) = Len(Nombre2)) Then
  • i = 0
  • Do
  • i = i + 1
  • If (Mid(Nombre1, i, 1) < Mid(Nombre2, i, 1)) Then EstSuperieur = False
  • Loop While (i < Len(Nombre1) And EstSuperieur = True)
  • End If
  • End Function
  • Function Addition(Nombre1 As String, Nombre2 As String) As String
  • 'Cette fonction sert à additionner des grands nombres
  • 'Supprimer éventuellement les zeros en début
  • Nombre1 = DeleteZeroDebut(Nombre1)
  • Nombre2 = DeleteZeroDebut(Nombre2)
  • Dim Retenu
  • Dim Signe
  • Addition = ""
  • Signe = ""
  • 'Rechercher le signe des nombres
  • If Mid(Nombre1, 1, 1) = "-" Then 'Nombre1 négatif
  • If Mid(Nombre2, 1, 1) = "-" Then 'Les deux nombres sont négatifs
  • Signe = "-"
  • Nombre1 = Mid(Nombre1, 2)
  • Nombre2 = Mid(Nombre2, 2)
  • Else 'Nombre1 négatif et nombre2 positif
  • Addition = Soustraction(Nombre2, Mid(Nombre1, 2))
  • Exit Function
  • End If
  • Else 'Nombre1 positif
  • If Mid(Nombre2, 1, 1) = "-" Then 'Nombre1 positif et Nombre2 négatif
  • Addition = Soustraction(Nombre1, Mid(Nombre2, 2))
  • Exit Function
  • End If
  • End If
  • If (Len(Nombre1) < Len(Nombre2)) Then
  • a = Nombre1
  • Nombre1 = Nombre2
  • Nombre2 = a
  • End If
  • n = Len(Nombre1)
  • Retenu = 0
  • i = 0
  • Do
  • i = i + 1
  • n1 = Mid(Nombre1, Len(Nombre1) - i + 1, 1)
  • If (i < Len(Nombre2) + 1) Then
  • n2 = Mid(Nombre2, Len(Nombre2) - i + 1, 1)
  • Else
  • n2 = 0
  • End If
  • r = Retenu + CInt(n1) + CInt(n2)
  • Addition = Right(r, 1) & Addition
  • If (r > 9) Then
  • Retenu = 1
  • Else
  • Retenu = 0
  • End If
  • Loop While i < n
  • If (r > 9) Then Addition = "1" & Addition
  • Addition = Signe & Addition
  • End Function
  • Function Soustraction(Nombre1 As String, Nombre2 As String) As String
  • Nombre1 = DeleteZeroDebut(Nombre1)
  • Nombre2 = DeleteZeroDebut(Nombre2)
  • Signe = ""
  • Soustraction = ""
  • Dim Resultat()
  • Dim Retenu
  • 'Rechercher le signe des nombres
  • If Mid(Nombre1, 1, 1) = "-" Then 'Nombre1 négatif
  • If Mid(Nombre2, 1, 1) = "-" Then 'Les deux nombres sont négatifs
  • Soustraction = Soustraction(Mid(Nombre2, 2), Mid(Nombre1, 2))
  • Exit Function
  • Else 'Nombre1 négatif et nombre2 positif
  • Soustraction = "-" & Addition(Mid(Nombre1, 2), Nombre2)
  • Exit Function
  • End If
  • Else 'Nombre1 positif
  • If Mid(Nombre2, 1, 1) = "-" Then 'Nombre1 positif et Nombre2 négatif
  • Soustraction = Addition(Nombre1, Mid(Nombre2, 2))
  • Exit Function
  • End If
  • End If
  • If (Len(Nombre1) < Len(Nombre2)) Then
  • a = Nombre1
  • Nombre1 = Nombre2
  • Nombre2 = a
  • End If
  • 'Renverser au cas ou le premier argument est inférieur
  • If (EstSuperieur(Nombre2, Nombre1)) Then
  • Signe = "-"
  • a = Nombre1
  • Nombre1 = Nombre2
  • Nombre2 = a
  • End If
  • ReDim Resultat(1 To Len(Nombre1))
  • Retenu = 0
  • Jeretiens = False
  • i = 0
  • Do
  • i = i + 1
  • n1 = Mid(Nombre1, Len(Nombre1) - i + 1, 1)
  • If (i < Len(Nombre2) + 1) Then
  • n2 = Mid(Nombre2, Len(Nombre2) - i + 1, 1)
  • Else
  • n2 = 0
  • End If
  • If (CInt(Retenu + n2) > CInt(n1)) Then
  • n1 = n1 + 10
  • Jeretiens = True
  • Else
  • Jeretiens = False
  • End If
  • Resultat(i) = n1 - n2 - Retenu
  • If (Jeretiens = True) Then
  • Retenu = 1
  • Else
  • Retenu = 0
  • End If
  • Loop While i < Len(Nombre1)
  • 'Inversion du texte obtenu
  • i = 0
  • Soustraction = ""
  • ZeroDebut = True
  • Do
  • i = i + 1
  • If (Resultat(Len(Nombre1) + 1 - i) <> 0 And ZeroDebut = True) Then
  • ZeroDebut = False
  • End If
  • If (ZeroDebut = False) Then Soustraction = Soustraction & Resultat(Len(Nombre1) + 1 - i)
  • Loop While i < Len(Nombre1)
  • If (Soustraction = "") Then Soustraction = 0
  • Soustraction = Signe & Soustraction
  • If Soustraction = "-0" Then Soustraction = "0"
  • End Function
  • Function Multi_Chiffre(Nombre As String, chiffre As Integer) As String
  • ' Cette fonction multiplie un nombre quelconque par un chiffre entre 0 et 9
  • 'Cette fonction n'est que la mise en oeuvre de la procedure du calcul manuel faite à l'ecole primaire
  • If chiffre = 0 Then
  • Multi_Chiffre = "0"
  • Exit Function
  • End If
  • Nombre = DeleteZeroDebut(Nombre)
  • Dim Retenu As Integer
  • Dim n As Integer
  • Retenu = 0
  • Multi_Chiffre = ""
  • i = 0
  • Do
  • i = i + 1
  • n = CInt(Mid(Nombre, Len(Nombre) + 1 - i, 1)) * CInt(chiffre) + CInt(Retenu)
  • Multi_Chiffre = Right(n, 1) & Multi_Chiffre
  • Retenu = (n - (n Mod 10)) / 10
  • Loop While i < Len(Nombre)
  • If Retenu <> 0 Then Multi_Chiffre = Retenu & Multi_Chiffre
  • End Function
  • Function Multiplication(Nombre1 As String, Nombre2 As String) As String
  • Nombre1 = DeleteZeroDebut(Nombre1)
  • Nombre2 = DeleteZeroDebut(Nombre2)
  • 'Eliminer les cas zeros
  • If (Nombre1 = "0" Or Nombre2 = "0" Or Nombre1 = "-0" Or Nombre2 = "-0") Then
  • Multiplication = "0"
  • Exit Function
  • End If
  • Signe = ""
  • 'Regarder le signe
  • If Mid(Nombre1, 1, 1) = "-" Then 'Nombre1 négatif
  • Nombre1 = Mid(Nombre1, 2)
  • If Mid(Nombre2, 1, 1) = "-" Then 'Les deux nombres sont négatif
  • Nombre2 = Mid(Nombre2, 2)
  • Else
  • Signe = "-"
  • End If
  • Else 'Nombre1 positif
  • If Mid(Nombre2, 1, 1) = "-" Then 'Nombre1 positif et Nombre2 négatif
  • Signe = "-"
  • Nombre2 = Mid(Nombre2, 2)
  • End If
  • End If
  • 'Enlever les zero a droites et les ajouter en fin d'opération
  • ' cas du premier nombre
  • ZeroDroite = ""
  • Do
  • If Right(Nombre1, 1) = "0" Then
  • ZeroDroite = ZeroDroite & "0"
  • Nombre1 = Mid(Nombre1, 1, Len(Nombre1) - 1)
  • End If
  • Loop While Right(Nombre1, 1) = "0"
  • 'Cas du deuxième nombre
  • Do
  • If Right(Nombre2, 1) = "0" Then
  • ZeroDroite = ZeroDroite & "0"
  • Nombre2 = Mid(Nombre2, 1, Len(Nombre2) - 1)
  • End If
  • Loop While Right(Nombre2, 1) = "0"
  • If (Len(Nombre1) < Len(Nombre2)) Then
  • a = Nombre1
  • Nombre1 = Nombre2
  • Nombre2 = a
  • End If
  • Multiplication = "0"
  • Retenu = ""
  • Dim chiffre As Integer
  • i = 0
  • Do
  • i = i + 1
  • chiffre = Mid(Nombre2, Len(Nombre2) + 1 - i, 1)
  • Multiple_Partiel = Multi_Chiffre(Nombre1, chiffre)
  • Multiplication = Addition(Multiplication, Multiple_Partiel & Retenu)
  • Retenu = Retenu & "0"
  • Loop While i < Len(Nombre2)
  • Multiplication = Signe & Multiplication & ZeroDroite
  • End Function
Function DeleteZeroDebut(Texte As String) As String
    'Fonction utilisée pour éliminer les 0 au début d'un nombre
   i = 0
   DeleteZeroDebut = ""
   ZeroDebut = True
   Do
    i = i + 1
    If (Mid(Texte, i, 1) <> 0 And ZeroDebut = True) Then
        ZeroDebut = False
    End If
    If (ZeroDebut = False) Then DeleteZeroDebut = DeleteZeroDebut & Mid(Texte, i, 1)
   Loop While i < Len(Texte)
   If (DeleteZeroDebut = "") Then DeleteZeroDebut = 0
End Function
Function EstSuperieur(Nombre1 As String, Nombre2 As String) As Boolean
    'Fonction utiliser pour comparer deux grands nombres
    'Equivalent de  "Nombre1 > Nombre2"
    Nombre1 = DeleteZeroDebut(Nombre1)
    Nombre2 = DeleteZeroDebut(Nombre2)
    EstSuperieur = True
    'Rechercher le plus grand
    If Len(Nombre1) < Len(Nombre2) Then 'Cas ou les deux nombres ont le meme nombre de chiffre
        EstSuperieur = False
    ElseIf (Len(Nombre1) = Len(Nombre2)) Then
        i = 0
        Do
            i = i + 1
            If (Mid(Nombre1, i, 1) < Mid(Nombre2, i, 1)) Then EstSuperieur = False
        Loop While (i < Len(Nombre1) And EstSuperieur = True)
    End If
End Function
Function Addition(Nombre1 As String, Nombre2 As String) As String
'Cette fonction sert à additionner des grands nombres
    
    'Supprimer éventuellement les zeros en début
    Nombre1 = DeleteZeroDebut(Nombre1)
    Nombre2 = DeleteZeroDebut(Nombre2)
    
    Dim Retenu
    Dim Signe
    
    Addition = ""
    Signe = ""
    
    'Rechercher le signe des nombres
    If Mid(Nombre1, 1, 1) = "-" Then 'Nombre1 négatif
        If Mid(Nombre2, 1, 1) = "-" Then 'Les deux nombres sont négatifs
            Signe = "-"
            Nombre1 = Mid(Nombre1, 2)
            Nombre2 = Mid(Nombre2, 2)
        Else 'Nombre1 négatif et nombre2 positif
            Addition = Soustraction(Nombre2, Mid(Nombre1, 2))
            Exit Function
        End If
    Else 'Nombre1 positif
        If Mid(Nombre2, 1, 1) = "-" Then 'Nombre1 positif et Nombre2 négatif
            Addition = Soustraction(Nombre1, Mid(Nombre2, 2))
            Exit Function
        End If
    End If
  
    If (Len(Nombre1) < Len(Nombre2)) Then
        a = Nombre1
        Nombre1 = Nombre2
        Nombre2 = a
    End If
    
    n = Len(Nombre1)
    Retenu = 0
    i = 0
    Do
        i = i + 1
        n1 = Mid(Nombre1, Len(Nombre1) - i + 1, 1)
        
        If (i < Len(Nombre2) + 1) Then
            n2 = Mid(Nombre2, Len(Nombre2) - i + 1, 1)
        Else
            n2 = 0
        End If
        
        r = Retenu + CInt(n1) + CInt(n2)
        Addition = Right(r, 1) & Addition
        
        If (r > 9) Then
            Retenu = 1
        Else
            Retenu = 0
        End If
   Loop While i < n
   If (r > 9) Then Addition = "1" & Addition
   Addition = Signe & Addition
End Function
Function Soustraction(Nombre1 As String, Nombre2 As String) As String
    Nombre1 = DeleteZeroDebut(Nombre1)
    Nombre2 = DeleteZeroDebut(Nombre2)
    Signe = ""
    Soustraction = ""
    Dim Resultat()
    Dim Retenu
    
    'Rechercher le signe des nombres
    If Mid(Nombre1, 1, 1) = "-" Then 'Nombre1 négatif
        If Mid(Nombre2, 1, 1) = "-" Then 'Les deux nombres sont négatifs
            Soustraction = Soustraction(Mid(Nombre2, 2), Mid(Nombre1, 2))
            Exit Function
        Else 'Nombre1 négatif et nombre2 positif
            Soustraction = "-" & Addition(Mid(Nombre1, 2), Nombre2)
            Exit Function
        End If
    Else 'Nombre1 positif
        If Mid(Nombre2, 1, 1) = "-" Then 'Nombre1 positif et Nombre2 négatif
            Soustraction = Addition(Nombre1, Mid(Nombre2, 2))
            Exit Function
        End If
    End If
  
    If (Len(Nombre1) < Len(Nombre2)) Then
        a = Nombre1
        Nombre1 = Nombre2
        Nombre2 = a
    End If

    'Renverser au cas ou le premier argument est inférieur
    If (EstSuperieur(Nombre2, Nombre1)) Then
        Signe = "-"
        a = Nombre1
        Nombre1 = Nombre2
        Nombre2 = a
    End If
    
    ReDim Resultat(1 To Len(Nombre1))
    Retenu = 0
    Jeretiens = False
    i = 0
    Do
        i = i + 1
        n1 = Mid(Nombre1, Len(Nombre1) - i + 1, 1)
        If (i < Len(Nombre2) + 1) Then
            n2 = Mid(Nombre2, Len(Nombre2) - i + 1, 1)
        Else
            n2 = 0
        End If
        If (CInt(Retenu + n2) > CInt(n1)) Then
            n1 = n1 + 10
            Jeretiens = True
        Else
            Jeretiens = False
        End If

        Resultat(i) = n1 - n2 - Retenu
        
        If (Jeretiens = True) Then
            Retenu = 1
        Else
            Retenu = 0
        End If
   Loop While i < Len(Nombre1)
   'Inversion du texte obtenu
   i = 0
   Soustraction = ""
   ZeroDebut = True
   Do
    i = i + 1
    
    If (Resultat(Len(Nombre1) + 1 - i) <> 0 And ZeroDebut = True) Then
        ZeroDebut = False
    End If
    If (ZeroDebut = False) Then Soustraction = Soustraction & Resultat(Len(Nombre1) + 1 - i)
   Loop While i < Len(Nombre1)
   If (Soustraction = "") Then Soustraction = 0
   Soustraction = Signe & Soustraction
   If Soustraction = "-0" Then Soustraction = "0"
End Function
Function Multi_Chiffre(Nombre As String, chiffre As Integer) As String
' Cette fonction multiplie un nombre quelconque par un chiffre entre 0 et 9
'Cette fonction n'est que la mise en oeuvre de la procedure du calcul manuel faite à l'ecole primaire
    If chiffre = 0 Then
        Multi_Chiffre = "0"
        Exit Function
    End If
    Nombre = DeleteZeroDebut(Nombre)
    Dim Retenu As Integer
    Dim n As Integer
    Retenu = 0
    Multi_Chiffre = ""
    i = 0
    Do
        i = i + 1
        n = CInt(Mid(Nombre, Len(Nombre) + 1 - i, 1)) * CInt(chiffre) + CInt(Retenu)
        Multi_Chiffre = Right(n, 1) & Multi_Chiffre
        Retenu = (n - (n Mod 10)) / 10
    Loop While i < Len(Nombre)
    If Retenu <> 0 Then Multi_Chiffre = Retenu & Multi_Chiffre
End Function

Function Multiplication(Nombre1 As String, Nombre2 As String) As String
    Nombre1 = DeleteZeroDebut(Nombre1)
    Nombre2 = DeleteZeroDebut(Nombre2)
    
    'Eliminer les cas zeros
    If (Nombre1 = "0" Or Nombre2 = "0" Or Nombre1 = "-0" Or Nombre2 = "-0") Then
        Multiplication = "0"
        Exit Function
    End If
    
    Signe = ""
    'Regarder le signe
    If Mid(Nombre1, 1, 1) = "-" Then 'Nombre1 négatif
        Nombre1 = Mid(Nombre1, 2)
        If Mid(Nombre2, 1, 1) = "-" Then 'Les deux nombres sont négatif
            Nombre2 = Mid(Nombre2, 2)
        Else
            Signe = "-"
        End If
    Else 'Nombre1 positif
        If Mid(Nombre2, 1, 1) = "-" Then 'Nombre1 positif et Nombre2 négatif
            Signe = "-"
            Nombre2 = Mid(Nombre2, 2)
        End If
    End If

    'Enlever les zero a droites et les ajouter en fin d'opération
    ' cas du premier nombre
    ZeroDroite = ""
    Do
        If Right(Nombre1, 1) = "0" Then
            ZeroDroite = ZeroDroite & "0"
            Nombre1 = Mid(Nombre1, 1, Len(Nombre1) - 1)
        End If

    Loop While Right(Nombre1, 1) = "0"
    'Cas du deuxième nombre
    Do
        If Right(Nombre2, 1) = "0" Then
            ZeroDroite = ZeroDroite & "0"
            Nombre2 = Mid(Nombre2, 1, Len(Nombre2) - 1)
        End If
    Loop While Right(Nombre2, 1) = "0"
    
    If (Len(Nombre1) < Len(Nombre2)) Then
        a = Nombre1
        Nombre1 = Nombre2
        Nombre2 = a
    End If
    
    Multiplication = "0"
    Retenu = ""
    Dim chiffre As Integer
    i = 0
    Do
        i = i + 1
        chiffre = Mid(Nombre2, Len(Nombre2) + 1 - i, 1)
        Multiple_Partiel = Multi_Chiffre(Nombre1, chiffre)
        Multiplication = Addition(Multiplication, Multiple_Partiel & Retenu)
        Retenu = Retenu & "0"
    Loop While i < Len(Nombre2)
    Multiplication = Signe & Multiplication & ZeroDroite
End Function



 Historique

22 janvier 2008 14:08:23 :
En fait il y avait un bug dans la fonction Addition 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 boucle DO While i<n le code suivant: If (r > 9) Then Addition = "1" & Addition

 Sources du même auteur

Source avec Zip Source avec une capture DIVISION EUCLIDIENNE DE POLYNOMES AVEC INTERFACE
DIVISION EUCLIDIENNE DE POLYNOMES

 Sources de la même categorie

Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks
Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTOGRAPHIE AFFINE par Tigrou66
Source avec Zip Source avec une capture SCANNER FLEX par lajouad
Source avec Zip EQUATIONSECONDDEGRÉ,MATH,DEGRÉ par shadkitenge
Source avec Zip Source .NET (Dotnet) SOMME DE CHIFFRES CONTENUE DANS UN NOMBRE par alpha5

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ENTRAÎNEMENT AUX 3 OPÉRATIONS (+ ; X ; -) par oulipan
Source avec Zip Source avec une capture TABLES DE MULTIPLICATION par Le Pivert
Source avec Zip Source .NET (Dotnet) MULTIPLICATION par alpha5
Source avec Zip Source avec une capture CALCULETTE POUR LES TRÈS, TRÈS, VRAIMENT TRÈS GRANDS NOMBRES par akim77
Source avec Zip JEU MULTIPLICATION ADDITION SOUSTRACTION DIVISION par ATH|500|

Commentaires et avis

Commentaire de MadM@tt le 12/09/2007 12:46:43

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).

Commentaire de Renfield le 13/09/2007 00:03:42 administrateur CS

plein de sources similaires dans le coin, y'a surement la réponse

Commentaire de rambc le 16/09/2007 12:43:54

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.

Commentaire de Amghid2007 le 25/10/2007 21:38:31

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

Commentaire de ecarbill le 22/01/2008 14:03:48

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

Commentaire de peterigbinobaarmy le 13/05/2009 12:22:44

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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

multiplication, additon, soustraction et division [ par Xoper ] je chercher un code qui me permet de prend une textbox, de la multiplier par un nombre fix et de donenr le resulta dans un autre textbox, puis par la Multiplication refusée.... [ par bil kid ] Voila mon problème:a=(720*60)/(t*500)Ceci a lieu dans une procédure click, et a comme t sont deux variable currency. T aynat pour valeur 1.Quand le co Multiplication dans une requete [ par oBud ] J'ai une question surement facile mais je n'y trouve pas la reponse .J'utilise le dataenvironment dans un programme et je dois faire une data grid qui Probleme de DLL.... [ par fred.toto ] Bonjour,J'ai un souci au niveau d'un dll... Je m'explique.J'ai cr&#233;er une dll tte simple avec 4 fonctions Addition, Soustraction, Multiplication e soustraction de date [ par oxram ] Bonjour j'aimerais savoir si la soustraction est possible avec les dates. (Exemple : date - 3 = 16/04/2005) avec date qui est la date du jour.Merci de multiplication decimal heure [ par pascallac ] bonjourj'ai trouv&#233; une solution pour pour W1 * t1 = Wh1mais je me sers de h1 et n1 Wh1(i) = W1(i) * ((n1(i) / 60) Problème tout bête de soustraction de Date [ par NykoKurapika ] Salut tout le monde ! Mon probl&#232;me est tout simple et pourtant .... voili, je voudrais soustraire &#224; la date du jour une autre date conte [VBS] Retour a un inputbox ... [ par zaert ] Bonjour tout le monde ! Je suis en train d'elaborer un petit logiciel simpa (logiciel niveau debutant :D) et j'ai un petit probleme avec celui ci ! Vo [VBS] [ par zaert ] Bonjour , je veux faire un petit logiciel de revision des tables de multiplication pour mon petit cousin mais le probleme est le suivant , je vous mon [VB6] Soustraction dans un variable [ par JeffC1977 ] Salut...J'ai un probl&#232;me avec un Soustraction... Bon je sais que je ne devrais pas avoiur de probl&#232;me mais ca ne fonctionne pas...J'utilise


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales