Algorithme d'Euclide étendu

Bonsoir,

Je cherche à refaire ce code sur VBA mais je n'y parviens pas...

Est-ce que quelqu'un peut m'aider?

algo

Salut,

Peux-tu le faire avec des formules Excel ?

Si oui, je peux tenter de le "traduire" en VBA.

Tu as posté deux demandes ; est-ce bien deux demandes différentes ? Si non, merci d'indiquer sur ton autre fil que c'est une erreur (tu peux par exemple effacer ton ancien texte et indiqué "posté par erreur".

Cordialement.

J'ai tenté mais ça marche pas...

Function inverse_mod(b As Long, n As Long) Dim n0 As Long, b0 As Long, t0 As Long, t As Long, q As Long, r As Long, temp As Long n0 = n b0 = b t0 = 0 t = 1 q = FIXn0 / b0 r = n0 - q * b0 Do While r > 0 temp = t0 - q * t If temp >= 0 Then temp = temp Mod n Else temp = n - ((-temp) Mod n) t0 = t t = temp n0 = b0 b0 = r q = FIXn0 / b0 r = n0 - q * b0 Loop inverse_mod = t End Function

Re,

Je t'avais demandé si tu savais le faire par formules Excel sur une feuille Excel, non pas par une ''Function'' dans un code VBA.

Edit Clément qui fait des doublons

Bonsoir à tous,

Cela fait plusieurs heures que je cherche à coder un algorithme assez simple, c'est assez important... Est-ce que quelqu'un pourrait m'aider?

Clément

image

Je dois calculer l'inverse modulaire par cette méthode, voici un exemple. Les deux premières lignes sont toujours celle-ci, je dois simplement renseigner le 676 et le 159, puis vous avez le détail des calculs ci-joint.

L'algorithme s'arrête une fois que Beta est égale à un et je veux le produit de alpha et gamma à la fin modulo 676.

Merci d'avance.

Clément

Edit Clément qui nous fait des triplicata

Bonjour,

Ma fonction marque une erreur. Pourtant le code me parait bon. Voyez-vous une erreur?

Function inverse_mod(b As Long, n As Long)

 Dim n0 As Long, b0 As Long, t0 As Long, t As Long, q As Long, r As Long, temp As Long

 n0 = n

 b0 = b

 t0 = 0

 t = 1

 q = Fix(n0 / b0)

 r = n0 - q * b0

 Do While r > 0 temp = t0 - q * t If temp >= 0 Then temp = temp Mod n Else temp = n - ((-temp) Mod n)

 t0 = t

 t = temp

 n0 = b0

 b0 = r

 q = Fix(n0 / b0)

 r = n0 - q * b0 Loop

 inverse_mod = t End Function

@ClementGirod merci de rester su ce fil SVP

Bonjour tout le monde.
Un petit exemple que tu devrais pouvoir adapter à tes besoins en ne conservant que le résultat final que j'ai coloré en jaune (s'il convient).
42euclide-etendu.xlsm (21.16 Ko)
Rechercher des sujets similaires à "algorithme euclide etendu"