【算法教程】【C/C++】基础数学:快速幂——程序设计思路与代码实现

faryou1年前 (2024-04-07)技术教程

前言

        通常情况下,我们在使用程序进行幂运算时,会利用循环乘法或pow( , )解决。但对于数据非常大的情况,这样做非常影响效率,很容易导致超时。因此,快速幂应运而生。


程序设计思路

        快速幂基于二进制进行。通常情况下,我们会将其封装为一个函数binpow( , )。下面举个例子说明其原理:

        我们要计算313,常规做法是:用for循环使一个变量从1开始每次乘3,这里数据小,没有问题,但如果是3100000000呢(不考虑数据溢出)?这样算肯定不对。

        快速幂就很好的解决了这个问题,我们可以将313分解为:

313 = 3* 3* 31

        这样一来,我们只需要计算32n即可,即每次进行平方运算。节省了大量时间。


代码实现

int quick(int a,int b){//计算a^b
    int res = 1;//从1乘起
    while(b>0){
        if(b&1) res=res*a;//当a(二进制)的这一位是1时,乘a
        a=a*a;//计算a^2
        b>>=1;//答案的一位(二进制)解决
    }
    return res;
}


结语

        快速幂在很大程度上提升了效率,使得程序速度更快。我是faryou,再见!

本文链接:https://blog.faryou.eu.org/post/95.html 转载需经作者授权!

分享到:

扫描二维码推送至手机访问。

版权声明:本文由faryou的博客发布,如需转载请注明出处。

本文链接:https://blog.faryou.eu.org/post/95.html

标签: C++算法基础
分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。