快速幂算法(C/C++)

传统解法

我们知道求一个数的幂可以表示为(ab)意思是a的b次方。如28运算结果是256运用for循环8次完全可以得到正确结果,但当b的值为10000,1000000时我们要得到幂函数的结果就相当麻烦了,那么是否有一种简单的方法可以使我们迅速得到幂函数的结果呢? 这就是今天我们要介绍的快速幂算法!

快速幂简介

如28可以等价于((((22)2)2)2),这时只需进行四次运算就可以得到本需要八次运算才可以得到的结果,在b数值较小的情况下我们不能较为直接的感觉到快速幂算法的优异性,但当b为10000甚至更大时速度会大大提高,减少时间复杂度一半。如当b=100000时,运用快速幂算法,直接减少了50000次运算,效率大大提高。

代码实现

当b为偶数时,它可以被分成一个个相同的(2)次模块。但当b为奇数时,b-1为偶数,算出结果后再乘以自身就可以得到运算结果。

long long fastPower(long long base, long long power) {
   
   
    long long result = 1;
    while (power > 0) 
    {
   
   
        if (power % 2 == 0)//如果指数为偶数
         {
   
   
            power = power / 2;    //把指数缩小
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值