快速求a的b次幂对c取余

快速幂取模理论基础:  计算 a^b mod c ?
  由(a x b) mod c=((a mod c) x b) mod c.
 我们可以将 b先表示成就:
   b=at2^t+at-1 2^t-1+……a02^0. (ai=[0,1]).
 这样我们由 a^b mod c=(a^(at2^t+at-12^t-1+…a02^0)mod c.

 然而我们求  a^(2^(i+1))mod c=((a^(2^i))mod c)^2 mod c .求得。

 

快速幂取余的程序:

 

long long BigMod(long long a,long long p,long long m)  //a^p%m
{
    if (a==0 || m==1)
        return 0;
    if (p==0)
        return 1;
    if (p%2)
        return ((a%m)*BigMod(a,p-1,m))%m;
    long long tmp=BigMod(a,p/2,m);
    return (tmp*tmp)%m;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值