模幂运算 a^b%c

来源:互联网 发布:正则化 约束优化 编辑:程序博客网 时间:2024/05/20 20:47
1)模幂运算1—累次计算法:
d= ar mod m
 =(…((((a mod m)*a) mod m)*a)mod m…*a)mod m  

算法

long modular_power1(long a, long r, long m){    long d=1, k;   a=a % m;    for(k=0;k<r; k++)d =(a*d) % m;    return d;}



(2)模幂运算2—快速计算法
  将r化为二进制数的形式( bkbk-1…b2b1b0),然后反复平方取余数。然后从最低位开始,自右至左逐位扫描。每次迭代时.用到下面两个恒等式中的;

a^2c mod m=(a^2)^c mod m

a^(2c+1) mod m=a*(a^2)^c mod m







模取幂运算—快速计算实现

long modular_power1(long a, long r,long m){  long d,t;    d=1;t=a;       while (r>0){         if ((r%2)==1) d=(d*t) % m;      r=r/2;      t=t*t % m;    }    return d;}