總結——數論:歐幾裏得算法&擴展歐幾裏得證明
一 歐幾裏得輾轉相除法算法
設a=qb+r,其中a,b,q,r都是整數,則gcd(a,b)=gcd(b,r),又因 r = a mod b,所以 gcd(a,b)=gcd(b,a mod b)。
證明:①證明充分性。
設 d 為 a,b 的公約數,記作 d|a , d|b ,即a和b都可以被d整除
又因 r=a-kb , 兩邊同時除以d,r/d=a/d-kb/d=m,由等式右邊可知m為整數, d|r , 即 d 是 (b,a mod b)的公約數,
②證明必要性
設 d 為 b, a mod b 的公約數,則 d|b , d|r
又因 a=r+kb ,所以 d 為 a 的因子,即 d|a ,因此 d 是 a,b 的公約數。
綜上,(a,b) 和 (b,a mod b) 的公約數一樣,其最大公約數必然相等。
二 擴展歐幾裏得算法
如果 gcd(a,b)=d , 那麽一定存在整數 x,y 滿足 ax+by=d.
個人並未在網上搜到關於如上定理的嚴格證明,大多的關註點是求 x,y 的值。註意因為這是一個不定方程,所以解不只有一組。如果大家有相關證明可以留言討論。x,y 值的求解:
設存在 ax+by=gcd(a,b)
根據歐幾裏得定理 gcd(a,b)=gcd( b,a mod b) ,
可得 ax+by = gcd(a,b) = gcd(b,a mod b) = bx′+(a mod b)y′ = bx′+(a?b?[a/b])y′ = ay‘ +b(x‘ - [a/b]y‘)
可以看到,x,y 的值由 x‘,y‘ 得出。而 x‘,y‘ 又如何得到?
重新來看看我們得到的兩個等式。x 和 y 是 gcd(a,b)=ax+by 的解,而 x’ 和 y’ 是在對 gcd(a,b) 按歐幾裏德算法進行一步後的結果對應的貝祖等式 gcd(b,a mod b)=bx′+(a mod b)y′ 的解。也就是說,gcd(a,b) 對應的貝祖等式的解 x,y 可以由 gcd(b,a mod b) 對應等式的解x’,y’計算得出。
由於歐幾裏德算法最後一步為 gcd(d,0)=d,
更進一步,對於任意不定式ax′+by′=c,只需要在等式ax+by=gcd(a,b)=d兩邊乘上c/d即可得到解為x′=x?c/d,y′=y?c/d
總結——數論:歐幾裏得算法&擴展歐幾裏得證明