模幂运算 a^b%c

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



(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;
} 


你可能感兴趣的:(HDU之数论)