为了表述方便,现在使用例子来说明。
假设一个整数是10,如何快速的求解10的75次方。
75的二进制形式为1001011.
10的75次方 = 1064∗108∗102∗101
在这个过程中,我们先求出 101 ,然后根据 101 求出 102 ,再根据 102 求出 104 ,……,最后再根据 1032 求出 1064 ,即75的二进制形式总共有多少位,我们就使用几次乘法。
下面是使用c++实现的代码:
int power(int a,int p)
{
int res = 1;
while(p != 0)
{
if(p & 1 == 1)
{
res = res * a;
}
p >>= 1;
a = a * a;
}
return res;
}