【“快速幂”算法】算法的目的、思想和原理、构建、实现与补充

一、算法目的

下面引入以下情景:

计算:a^b

很显然,计算在指数b非常庞大的时候,会进行非常复杂的运算。常规的运算方法要算b个a相乘。

我们要想个办法,怎么样不用算这么多次就计算出a^b结果。

 

二、思想和原理

在C语言中,有一种运算为“a*=a”(含义:a=a*a),即自乘。我们看看进行一次自乘运算,会发生什么。

计算第一次:a*=a,结果为a^2;

计算第二次:a*=a,结果为a^4;

很显然,自乘运算,会让a以2的n次方的速度增长下去。

 

那么,在以2的n次方的速度增长的前提下,它,与二进制联系在了一起。

我们已知,一个数可以以一种“进制展开”的形式表达:

如19:在十进制下展开:19=1x10^1+9x10^0

同样,它可以在二进制下展开:19(10)=1x2^4+0x2^3+0^2^2+1x2^1+1x2^0

因此,一个正整数可以以二进制表达。

 

此时,便可以将我们的指数b,以二进制表达&

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值