[学习笔记]关于如何求取模运算中进行除法

    近期,在密码学课程中,在做基本的加密解密运算时,遇到了对除法的模运算,如19/11 mod26。课上给出的方法是求得反模通式-11,即用11对26(除数对模分解),但是最后必须剩下为1。所以在实践中,试除了种以待定系数法求解为基础的求法,这里特作记录,以备今后忘记。

     以19/11 mod26为例。由于分析发现,这个算式相当于求解n个26加上19除以11,设此运算为整数运算。

    ①将19/11 mod26等效为(n * 26 + 19)/11,由此将问题转换为求解n的值。

    ②若问题正确,即答案为整数,则 (n * 26 + 19)mod11=0,移项后整理得,n mod11= (-19) mod11 / 26 mod11

即 n = 3 / 4 mod11。

    ③  3 / 4 mod11又是一个新的除式,这里等效为 n =(m * 11 + 3) /4 , 同理(m * 11 + 3)mod4=0 ,移项之后的式子为

m mod4 = (-3)mod4 / 11 mod4  即 m = 1 / 3 mod4。

    ④   m = 1 / 3 mod4由此得到了个新的除式,利用上面的方法等效为化为m =(k * 4 + 1) /3 ,继续化为 k = 2 / 1  mod 3

这样算得结果即在 mod3 中而且数值比较小,可以直接得出 k = 2 。

    ⑤将 k =2 带入之前的式子m =(k * 4 + 1) /3 得出 m =3 ,由此 n = 9 ,再带入(n * 26 + 19)/11 计算结果为 23 ,验证一下, 23  * 11 = 253,253 mod26 = 19 。

    本法,主要思路是通过迭代运算将 mod的数,以及除数化为更小的值,方便计算,程序设计的话,可以使用借用递归,堆栈等方式来实现。该法还可以判断是否有解,例如19 /10 mod26,由于10的尾数和26尾数凑不出9来,我们发现式子无解,那我们用该方法来计算一下。 19 /10 mod26 等效为 (n * 26 + 19)/10 ,n = 1 / 6 mod10, m =  5 / 4 mod6,k =  5 / 4 mod6, j = 3 / 2 mod4 ,i = 1 / 0 mod 2。除数出现了0 式子无意义,所以无解。该法适用于每次mod值以及除数的值多变的情况下,若是mod值以及除数已定,该法并不能高效地计算出答案,因为。每次都要经历一定的迭代数,次数根据式子而定,不跟据数值大小而定,这是该法的计算优点。

 -




  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值