扩展欧几里得算法的直观理解

最近在学密码学—求乘法逆元的方法

其中的核心算法——扩展欧几里得算法,虽然有大量的资料阐述了它的公式推导和代码实现,但均未从直观、形象化的角度说明,为什么这个算法适合用来求乘法逆元

这个算法的精髓与欧几里得算法求最大公约数一样:逼近+等效

我们先来看看欧几里得算法
在这里插入图片描述

a = q n + r a = qn+r a=qn+r
最大公约数有多大我们不知道,但它一定比余数 r r r

无论是大数 a a a,小数 n n n,还是余数 r r r,都是由最大公约数这个砖头叠成的塔

于是这个找砖头的游戏,就可以由高塔 a a a和低塔 n n n之间的较量,等效成低塔 n n n和高塔的塔尖 r r r之间的较量

这样一层一层迭代下去,塔就会一步一步向砖头逼近

现在我们再回过头来看扩展欧几里得算法
在这里插入图片描述

定义式整个除以最大公约数gcd(a,b),右边就会变成1,左边a, b中必定有一个变成质数

其实就是求乘法逆元的问题:一个质数和一个比它小的数,它俩乘以多少倍之后差为1

看一个例子:
在这里插入图片描述

如果说刚才是拆塔找砖,那现在就是用砖盖塔,让两个塔高度差刚好为1

同样,根据逼近的思想,我们多用几块小砖,尝试让它跟大砖一样高:
550 × 3 = 1759 − 109 550×3=1759-109 550×3=1759109
可惜还是差了一些(109)。不过,相比于刚开始两块砖的高度差,550×3与1759的差距已经小了很多

注意,现在两座塔的高度差,已经与大砖1759,无关了!通过调节小砖(550)与3块小砖(109)的相对数目,我们可以把这高度差控制在109以内。现在大砖的等效高度变成了550,小砖变成了109

109的小砖,其实是5×1759与(3×550)+550的差值状态!

5个109与550很接近,因此左边堆5个1759,右边堆5个550×3和1个550后,两座塔的高度差缩小到了5

新的高度差调节阈值,也变成了5!

109包含21个5,也就是说,

不断地等效—迭代后,最终一定会找到一组数据,使得高度差恰好为1

如果对你有帮助的话,点个赞吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值