1.模取运算的性质
(1)(a+b)%c = ((a%c)+(b%c))%c
(2)(a*b)%c = ((a%c)*b)%c
2.快速幂乘计算a^b
(1)a,b都为正数,将b二进制化
(2)时间复杂度为logb,乘法次数不是最少的
__int64 power = 1;
while(b > 0){
if(b&1) power *= a;
a *= a;
b >>= 1;
}
return power
3.快速模幂(蒙哥马利算法)
__int64Power(int a,int b,int c)
{
//计算(a^b)%c
int digit[32];
int i, k;
__int64 power=1;
i =0;
while(b)
{
digit[i++]= b%2;
b >>=1;
}
for(k = i-1; k >=0; k--)
{
power=(power* power)% c;
if(digit[k]==1)
{
power=(power * a)% c;
}
}
return power;
}
4、
int exp_mod(int a,int b,int n){
int r=1;
while(b){
if(b&1)r=(r*a)%n;
a=(a*a)%n;
b>>=1;
}
return r;
}