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