【算法】快速幂/快速幂取余(演算过程/代码)

快速幂

快速幂算法例子:​​

$$5^{16}=25^8=625^4=390625^2=152 587 890 625​$$
$$3^{20}=9^{10}=81^5=81*81^4=81*6561^2=81*43046721=3486784401$$

利用二分法能大大加快了求解速度

代码:

int Power(int base,int index){
    int result=1;
    while(index!=0){
        if(index%2 == 1) result =result*base;
        base = base* base;
        index/=2;
    } 
    return result;
}

快速幂求余:

​$$3^{20}\%4=(9\%4)^{10}\%4=5^{10}\%4=(25\%4)^5\%4=1^5\%4 \Rightarrow result=(1*1)\%4=1$$
$$6^{13}\%7 \Rightarrow result =(1*6)\%7=6,(36\%7)^6\%7=(1\%7)^3 \Rightarrow result=(6*1)\%7=6,1\%7....result=6 $$


int PowerMod(int base, i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值