计算a^n的三种对数复杂度算法

本文深入解析了快速幂运算的三种方法:递归解决、从左向右和从右向左(快速幂)。通过实例详细解释了如何利用二进制表示进行高效计算,尤其强调了快速幂算法的简便性和高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.递归解决
a^n= (a ^(n/2)) ^2 ,n为偶数
a^n= (a ^((n-1)/2)) ^2*a,n为奇数
n==0时返回

2和3用n的二进制表示来说明

2.从左向右
假设n=13,即1101
下面是求a的幂的步骤:
0->1->10->11->110->1100->1101
每次个位+1是*a,后面添0是平方。

3.从右向左(快速幂)

1101每一位表示的是a^8 a^4 a^2 a^1
位置上是1就乘上,位置是0则跳过这一位
可以设置一个temp=a,每移动一位,temp=temp*temp

第一种方法和第二种方法我比较惊奇,而第三种比较常用的我觉得很简单,因为这就是二进制表示嘛,很正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值