用于求 a^b%c,防止数据过大而溢出
int _Montgomery(int a,int b,int c)
{
int ans=1;
a=a%c;
while(b>0)
{
if(b&1)ans=(ans*a)%c;
b=b>>1;
a=(a*a)%c;
}
return ans;
}
时间复杂度为O(log2b)
用于求 a^b%c,防止数据过大而溢出
int _Montgomery(int a,int b,int c)
{
int ans=1;
a=a%c;
while(b>0)
{
if(b&1)ans=(ans*a)%c;
b=b>>1;
a=(a*a)%c;
}
return ans;
}