int Montgomery(int a,int n,int c) //求a
n % c
{
int ans=1;
a=a%c;
while(n>0)
{ //位运算n&11表示n为奇数,为0表示偶数
if(n&1)ans=(ans*a)%c; //奇数,补一项,n&1等价与n%21
n=n>>1; //位运算,n=n>>1等价于n=n/2
a=(a*a)%c;
}
return ans;
}
来源:https://blog.csdn.net/xboxRan/article/details/101145554