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;
}
快速幂模板
最新推荐文章于 2024-07-25 06:55:26 发布
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;
}