我是靠谱客的博主 风中手机,最近开发中收集的这篇文章主要介绍快速求幂算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在写一个数的幂运算的时候我们通常会想到比较直观的O(N)算法,代码如下
#include<stdio.h>
int main() {
    int pow = 5;//指数
    int num = 2;//底
    int res=1;//结果
    while (pow>0) {
        res *= num;
        pow--;
    }
    printf("%d", res);
}

最近在做数据结构习题的时候学习到了一中快速求幂算法,时间复杂度为log2(N).
这个算法运用到了二进制数的除2运算,二进制的除法与十进制基本类似,下面举一个例子23/2,结果为1011余1
这里写图片描述
所以23(10111)/2(10)=(11)1011,这就意味每除一次2便可以去掉末位的1,23(10111)%2(10)=1.
在计算2^23时我们就可以通过计算2^16(10000),2^4(100),2^2(10),2^1(1)然后相乘,将其分解成了这几个部分相乘。
下面是代码实现

void QuickPower(int Coefficient,int Exponent) {
    int result = 1;
    while (Exponent!=0) {
        if (Exponent % 2) 
            result *= Coefficient;
        Coefficient *= Coefficient;
        Exponent = Exponent / 2;
    }
    return result;
}

最后

以上就是风中手机为你收集整理的快速求幂算法的全部内容,希望文章能够帮你解决快速求幂算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部