一直覺得這個(gè)算法很神奇,昨天用到了,發(fā)現(xiàn)效果很好,速度果然很快!
int Montgomery(int a, int p, int m)
{
if(p==0) return 1;
int r=a%m;
int k=1;
while(p>1){
if(p&1!=0){
k=(k*r)%m;
}
r=(r*r)%m;
p/=2;
}
return (r*k)%m;
}
{
if(p==0) return 1;
int r=a%m;
int k=1;
while(p>1){
if(p&1!=0){
k=(k*r)%m;
}
r=(r*r)%m;
p/=2;
}
return (r*k)%m;
}