快速指数法在计算高次方时十分高效,也称为快速幂。
计算机中采用二进制存储数据,对于一个数字M,它的二进制位数为log2(M)+1。
对于一个二进制表示的数字M(2),2∗M即为在M(2)的末尾追加(位右移运算)一个0,同理,2∗M+1即为在M(2)的末尾追加一个1。
将0(2)进行log2(M)+1次上述操作(追加高到低位的二进制位),即可得到M(2)。
an=R⇒a2n=R2⇒a2n+1=R2⋅a
确定 M(2) 序列,逐步对n追二进制位(初始为0),并更新计算an,追加完二进制位时,即得到aM。
时间复杂度:O(log(M))。