用反复平方法求幂运算

3 篇文章 0 订阅
2 篇文章 0 订阅

用反复平方法求幂运算:(M=Cd

 

一、反复平方法求幂运算的算法:

设:d= (dndn-1… d1d0)2

 

方法一:(right toleft)

M = 1; p = C;
For  i= 0 to n do :
   If(di==1) then
       M = M*p;
   endIf
   p=p*p;  //之所以称之为反复平方法的缘由。
endFor


 

 

方法二:(left  to right)

M=1;  
For  i= n to 0 do:
       M= M*M;  //之所以称之为反复平方法的缘由
       If(di == 1) then
              M= M*C;
       endIf
endFor

 


二、反复平方法求幂运算的算法的证明: 

方法成立的的证明:

设 d = (dndn-1… d1d0)2

       = dn*2n +  dn-1*2n-1 +  …  +  d1*21  +  d0*20

M=Cd  

= C^ (dn dn-1…d1d0)2  

=C ^(dn*2n +  dn-1*2n-1 +  …  +  d1*21  +  d0*20­)

=C^(dn*2n) * C^(dn-1*2n-1)*  … * C^( d1*21) *C^( d0*20­)

=(C^2n)^d*(C^2n-1)^dn-1 * …* (C^21)^d1* (C^20)^d0

 

而对C^2n= ((…((C^2)^2)^2 …)^2)^2 中n-1重括号;

可见上述算法是成立的。

 

三、反复平方法求幂运算的两个算法的比较:

方法一与方法二的比较:

   方法二更好,因为M = M*C, 中的C是个常量,对与固定的C可以有些优化算法;

  (1)根据C的二进制形式计算M*C 的方法称之为 binary method。

  (2)加速binary算法可以先讲C分解(factor),再利用binary method,

称之为(factor and binary method)


四、反复平方法求幂运算的应用:

       1.模幂运算:M =Cd  mod N

         只需在原算法中的每步运算中,加上mod N 就可以解决;

     该算法可以用于RSA算法中。

     利用Montgomery算法改写算法中求mod运算可以加速上述算法的执行。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值