所谓的扩展欧几里得算法就是用来求解方程:ax+by=gcd(a,b)的算法由辗转相除法可知gcd(a,b)=gcd(b,a%b).所以有
ax1+by1=gcd(a,b) (方程一)
bx2+(a%b)y2=gcd(b,a%b)(方程二);
由欧几里得算法gcd(a,b) =gcd(b,a%b) 得到,ax1+by1 = bx2+(a%b)y2,
即 ax1+by1=bx2+(a-a/b*b)y2 —> ax1+by1=ay2+b(x2-a/b*y2)
在根据多项式恒等定理(把a,b看成变量),x1=y2; y1=x2-a/b*y2;
第二个式子变形可得到:ay1+b(x1-(a/b)×y1)=gcd(a,b)故可以的得到:x=y1,y=(x1-(a/b)×y1)。对于式子 ax+by=gcd(a,b)
而且当b=0时,gcd(a,b)=a, ax = a , 则x=1,y=0;(这里我还是推荐不把gcd(a,0)理解成最大公约数,而是一个计算机求出来的值)
(表面上看,就是已知方程一的一组解,可以得到方程二的一组解,已知方程二的一组解,就可以得到方程一的一组解,但是实际情况是,不可能先知道方程一的解(x1,y1)。)上述思想是递归定义的,不断地利用gcd(a,b) =gcd(b,a%b),到b=0(