next up previous contents index
suivant: Traduction Xcas monter: Calcul de AP mod N précédent: Calcul de AP mod N   Table des matières   Index

Traduction Algorithmique

-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

next up previous contents index
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