suivant: Traduction Xcas
monter: Calcul de AP mod N
précédent: Calcul de AP mod N
Table des matières
Index
-Premier algorithme
On utilise deux variables locales PUIS et I.
On fait un programme itératif de façon qu'à chaque étape, PUIS
représente
AI mod N
fonction puimod1 (A, P, N)
local PUIS, I
1->PUIS
pour I de 1 a P faire
A*PUIS mod N ->PUIS
fpour
retourne PUIS
ffonction
-Deuxième algorithme
On n'utilise ici qu'une seule variable locale PUI, mais on fait varier P de
façon qu'à chaque étape de l'itération on ait :
PUI*AP mod N = constante. Au début PUI = 1 donc
constante = AP mod N (pour la valeur initiale du paramètre P, c'est
à dire que cette constante est égale à ce que doit retourner la
fonction), et, à chaque étape, on utilise l'égalité
PUI*AP modN = (PUI*A modN)*AP-1 mod N, pour diminuer la valeur de P,
et pour arriver à la fin à P = 0, et alors on a la
constante = PUI.
fonction puimod2 (A, P, N)
local PUI
1->PUI
tantque P>0 faire
A*PUI mod N ->PUI
P-1->P
ftantque
retourne PUI
ffonction
-Troisième algorithme
On peut aisément modifier ce programme en remarquant que :
A2*P = (A*A)P.
Donc quand P est pair, on a la relation :
PUI*AP = PUI*(A*A modN)P/2 mod N
et quand P est impair, on a la relation :
PUI*AP = (PUI*A modN)*AP-1 mod N.
On obtient alors, un algorithme rapide du calcul de
AP mod N.
fonction puimod3 (A, P, N)
local PUI
1->PUI
tantque P>0 faire
si P mod 2 =0 alors
P/2->P
A*A mod N->A
sinon
A*PUI mod N ->PUI
P-1->P
fsi
ftantque
retourne PUI
ffonction
On peut remarquer que si P est impair, P - 1 est pair.
On peut donc écrire :
fonction puimod4 (A, P, N)
local PUI
1->PUI
tantque P>0 faire
si P mod 2 =1 alors
A*PUI mod N ->PUI
P-1->P
fsi
P/2->P
A*A mod N->A
ftantque
retourne PUI
ffonction
-Programme récursif
On peut définir la puissance par les relations de récurrence :
A0 = 1
AP+1 modN = (AP modN)*A mod N
fonction puimod5(A, P, N)
si P>0 alors
retourne puimod5(A, P-1, N)*A mod N
sinon
retourne 1
fsi
ffonction
-Programme récursif rapide
fonction puimod6(A, P, N)
si P>0 alors
si P mod 2 =0 alors
retourne puimod6((A*A mod N), P/2, N)
sinon
retourne puimod6(A, P-1, N)*A mod N
fsi
sinon
retourne 1
fsi
ffonction
suivant: Traduction Xcas
monter: Calcul de AP mod N
précédent: Calcul de AP mod N
Table des matières
Index
Documentation de giac écrite par Renée De Graeve