目录
ID:HL_5461
引言
首先提一个问题:如何计算 ?
对于这个问题,相信很多人心里第一个想法是循环n次,每个循环里都对原数乘2。
这的确是一个简单快捷的方法,复杂度也只有O(N)。但是如果中,n等于一亿,甚至更多呢?此时我们将循环一亿次。所以,有没有一个更好的方法呢?
当然是有的,就是我们接下来将认识的快速幂算法,如果使用快速幂算法,当n为一亿时,我们只需循环27次就可以了。
一、什么是快速幂
1.
的另一种计算方法
先举个例子,对 当
时。
用普通的方法,很显然,我们需要循环16次。但我们不妨换一个思路:
对于上标n,我们使用每次翻倍的方法,直到n为16。这样的话,我们只要循环4次就行了,时间复杂度也由原来的O(N)减小到O(logN)。
就这么简单,本文到此结束(bushi)。
好吧,估计很多人会有疑问:这样的话,我们难道只能计算n为2的幂的情况吗?像n为27,n为41这种非幂的情况都算不了,这个算法岂不是很鸡肋?
当然不是,但在向后介绍之前,我们先明确这样一个事实:对于 (其中n可写成
,即,2
的多少幂形式)的幂函数,我们可以用如上方法快速求出。
接下来是n不是2的幂的情况:对于非2的幂的情况,我们都可将其拆为2的幂相加的情况。以,即
为例:

本文介绍了快速幂算法,一种用于高效计算幂函数的方法,通过将指数n分解为2的幂之和,将计算复杂度从O(N)降低到O(logN)。通过实例演示了如何利用二进制和位运算实现代码,适合处理大数幂运算问题。
&spm=1001.2101.3001.5002&articleId=137434706&d=1&t=3&u=dde79bde62ac4f41a6732550cfd8d75d)
2820

被折叠的 条评论
为什么被折叠?



