定义:
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。——百度百科
证明:(是从别的地方学的,感觉这种证明比较好理解,就尝试自己写一个)
这是条件 a*x1+b*y1=gcd(a,b)
同理 b*x2+(a mod b)*y2=gcd(b,a mod b)
∵ gcd(a,b)=gcd(b,a mod b)
∴ a*x1+b*y1=b*x2+(a mod b)*y2
且a mod b 有另一种表达方式 a-floor(a/b)*b.(floor为向下取整,若两个数都为整形变量则直接会向下取整,不用加floor 函数)
故a*x1+b*y1=b*x2+(a-(a/b)*b)*y2
即a*x1+b*y1=b*x2+a*y2-(a/b)*b*y2=a*y2+b*(x2-(a/b)*y2)
根据多项式恒等定理:(如果两个关于x的多项式恒等,则它们的次数一定相同,且同次项的系数一定相等。)
得x1=y2,y1=x2-(a/b)*y2
若b==0,(计算机中==为=)gcd(a,b)=a.
∴x1=1,y1=0;递归回去就可以得到解了。
同余方程那道题就是gcd(a,b)=1的请况。
习题:同余方程 2012day2
青蛙的约会POJ1061