听说有这么一种算法能够
让计算机很快地求出![a^{b}](https://latex.csdn.net/eq?a%5E%7Bb%7D)
暴力相乘的话,电脑要计算 b次。用快速幂,计算次数在 log2(b) 级别,很实用。
原理 I
(1)如果将 a 自乘一次,就会变成 。再把
自乘一次就会变成
。然后是
…… 自乘 n次的结果是
。对吧……
(2),这个容易。
(3)将 b 转化为二进制观看一下:
比如 ,就是
。从左到右,这些 1分别代表十进制的 8,2,1。可以说
。
为什么要这样表示?因为在快速幂的过程中,我们会把 a自乘为 ,然后
自乘为
……像上面第一条说的。
过程会是这样:
(好长,可以不看,如果要阅读下面的模拟过程的话,要慢慢地看噢)
·假设我们拿到了 a,并且 b=11。想求