详解扩展欧几里得
首先,如果你想明白扩展欧几里得是什么,你要先明白辗转相除法(也就是朴素基本的欧几里得算法)
辗转相除法
辗转相除法的方法是:给定两个数 a 与 b a与b a与b,取较大的数除以较小的数,然后用其余数除以除数,直到最后的结果为0。这是 a 与 b a与b a与b求最大公约数的一种简便算法。
例如:取两数30和17,
第一次辗转相除:30%17=13 13/17=0…13
第二次辗转相除:17%13=4 4/13=0…4
第三次辗转相除:13%4=1 1/4=0…1
第四次辗转相除:4%1=0
此时1为30与17的最大公约数
扩展欧几里得
而扩展欧几里得就是增加了一些有趣的东西
就是求一个简单 的式子
即 a x + b y = g c d ( x , y ) ax+by=gcd(x,y) ax+by=gcd(x,y),看起来是不是很像贝祖等式?
话说回来:
根据辗转相除法我们可以得知
g c d ( x , y ) = g c d ( y , x m o d y ) gcd(x,y)=gcd(y,x \quad mod \quad y) gcd(x,y)=gcd(y,xmody)
即上文介绍内容转化代码
同时 还有一个等式 即为 a y + ( x m o d y ) × b = g c d ( x m o d