扩展欧几里得&&裴蜀定理

定理内容:对于方程a*x+b*y=GCD(a,b),存在整数解x,y    

证明过程由GCD(a,b)=GCD(a%b,b),可得x*y+b*(a%b)=GCD(b,a%b),将a%b->a-(a/b)*b,得到x*b+(a-(a/b)*b)*y=GCD(a%b,b),化简得到b*x-y*(a/b)*b+a*y=GCD(a%b,b),将同类项合并得到a*y+b*(x-(a/b)*y),此时令x1=y,y1=x-(a/b)*y,显然x1,y1均为整数

裴蜀定理:a,b为任意整数,d=GCD(a,b),d | c,则对于x*a+b*y=c,存在任意整数x,y使等式成立(特别情况下则变成了上面证明的EXGCD),则a*x+b*y=1有解的条件为GCD(a,b)=1,即a,b互素

证明过程:因为d | a,d | b,所以d | (a*x+b*y), 令a*x+b*y的最小正值=s,必有d | s,令q=a/s,r=a%s,则r=a-q*s=a-q*(a*x+b*y),化简发现r=(1-q*x)*a+(-q*y)*b,因为d | s,所以r也为a*x+b*y的一个值,因为0<=r<s,所以得到r=0,所以d=r,所以最小为d,当a,b互素时,显然d=1

注:扩展欧几里得的通解为x=x0+t*b/(GCD(a,b),y=y0-t*a/(GCD(a,b),其中x0,y0,是a*x+b*y=GCD(a,b)时的解,如何得到呢?将x和y分别代回原式中得到a*(x0+t*b/d)+b*(y0-t*a/d)=d,化简得到a*x0+b*y0+a*b*t/d-a*b*t/d=d,后面两项相消了,那为何要让a,b除以gcd而不是直接代呢?因为除完gcd后得到的两个数可以得到a,b的任意倍数,包括的范围远比a,b,大

若出现错误请联系博主,谢谢

猜你喜欢

转载自blog.csdn.net/acerandaker/article/details/80722276
今日推荐