快速幂(Fast Exponentiation Algorithm)
公式
基础公式:(a*b)%m = [(a%m)*(b%m)]%m
快速幂需要用到的扩展公式:
-
1.
ab
a
b
当b = 偶数的时候
- ab a b = (a2)b2 ( a 2 ) b 2 2. ab a b 当 b = 奇数的时候
- ab a b = (a2)b2∗a ( a 2 ) b 2 ∗ a
int fastEA(int a, int b, int m)
{
if(b == 0)
{
return 1;
}
else if(b == 1)
{
return a%m;
}
if(b % 2 == 0)//为偶数的时候
{
return ksm(a*a%m,b/2,m);
}
else//为基数的时候
{
return ksm(a*a%m,b/2,m)*a%m;
}
}
完全是自己的总结,只是单纯的做一下笔记,随后会加上更加详细的说明,再举很多具体的例子