La exponenciación modular es un tipo de exponenciación realizada sobre un módulo. Es particularmente útil en ciencias de la computación, especialmente en el campo de la criptografía.
Algoritmo:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n Salida : ak mod n int exp=1; int xp= a%n; Mientras (k>0) Hacer si(k%2!=0) exp= (exp*xp)%n; fin si xp=(xp*xp)%n; k= k/2; Fin Mientras Retornar (exp)Implementación:
public int CalcularExp(int a,int k,int z) { int exp=1; int xp=a%z; while(k>0) { if((k%2)!=0) { exp=(exp*xp)%z; } xp=(xp*xp)%z; k=k/2; } return exp; }
Genial! :D
ResponderEliminar