什么是快速幂,为什么要使用快速幂?
Macw: 快速幂有好多好处。
Penelope: 例如?
Macw: 它比较快。
见名知意,快速幂算法可以在非常短的时间内求出一个数的 nnn 次幂。虽然快速幂在初学阶段的应用不算太多,但是快速幂背后的思想是非常值得我们去理解的。
举例而言,如果我们要求出 343^434 的值是多少?我们当然可以暴力求解 3×3×3×3=813 \times 3 \times 3 \times 3 = 813×3×3×3=81。如果要求出 3n3^{n}3n 是多少呢?暴力也还不为过…
暴算法力求解一个数的次幂的时间复杂度是 O(n)O(n)O(n)。如果我们要求解的次幂非常高的时候,那么速度就会变得非常慢。众所周知,普通64位测评机每秒也就能处理 10810^8108 左右的数据。因此我们需要找到一个更优的算法来解决这个问题。
快速幂算法的核心思想就是幂运算的乘法法则。
我们以求 3163^{16}316 为例,根据“同底次幂相乘,底数不变,指数相加的法则”,我们可以把问题看作成求解 38×383^{8} \times 3^{8}38×38 的值。不难看出,这样的话我们只需要知道 383^838 的值,我们就可以快速求出 3163^{16}316 的值了,不再需要在 383^838 的基础上再乘 888 遍来得到最终结果。相同地,我们也可以以同样的方法快速求出 383^838 的值,这样子程序运行的速度将会大大减少:
再以计算 3163^{16}
深入理解快速幂算法:原理、应用与优化,

最低0.47元/天 解锁文章
7407






