證明:gcd(m,n)=gcd(n mod m,m)成立,m,n為正整數,m>0.
證明:
1)1個常識:
如果 a≥b 並且 b≤a,那么 a=b.
2個前提:
1)只在非負整數范圍內討論兩個數 m 和 n 的最大公約數,即 m, n ∈ N.
2)0可以被任何數整除,但是0不能整除任何數,即 ∀x(x|0) and ∀x(0| x).
2)1個引理:
假設 k|a, k|b,則對任意的 x,y ∈ Z, k|(xa+yb)均成立.
證明:
k|a => a=pk, k|b => b==qk (其中 p,q ∈ Z)
於是有 xa+yb=xpk+yqk=(xp+yq)k
因為 k|(xp+yq)k, 所以 k|(xa+yb) // 此處表示(xa+yb) 被k整除。
3)gcd的Euclid算法證明:
命題:對任意 m, n ∈ N,證明gcd(m,n) = gcd(n, m mod n)
證明:
令 k=gcd(m,n),則 k|m 並且 k|n;
令 j=gcd(n, m mod n), 則j|n 並且 j|(m mod n);
對於m, 可以用n 表示為 m=pn+(m mod n);
由引理可知 j|m(其中 x=p,y=1), 又 j|n,於是 j 是 m 和 n 的公約數(但不一定是最大的);
因為 k 是 m 和 n 的最大公約數,所以必有 k≥j;
通過另一種表示形式:(m mod n)=m-pn,同理可得:
k|(m mod n),又k|n,於是 k 是 (m mod n) 和 n 的公約數(也不一定是最大的);
同樣由 j 是 n 和 (m mod n) 的最大公約數可以得到 j≥k;
由常識,得出結論 k=j,
即gcd(m,n) = gcd(n, m mod n) ,得證。
//思路:

先預證明k是m,m mod n 的公約數, 再證明j是m,n的公約數,最后由 k≥j和 j≥k得知k= j,又因為k,j本來就是gcd(),所以gcd(m,n) = gcd(n, m mod n)證明完畢。
//第一步:
先證明k>=j,怎么證明呢?由條件k=gcd(m,n)可知k已經是n,m的最大公約數!所以找一個比k小的約數不就好了嗎!下面證明n,m的一個公約數:
由j=gcd(n, m mod n)可知j|n 並且 j|(m mod n) :既表示n被j整除,(m mod n)被j整除。
所以找到一個n的約數是 j,再找到m的約數為 j即可。
由條件知m=pn+(m mod n);(為什么m=pn+(m mod n)?因為(m mod n)可以表示成m=pn+(m mod n),m mod n表示m對n整除后的余數。)
再由j=gcd(n, m mod n)可知:n和(m mod n)均被j整除,就是說n和(m mod n)有一個公約數是j。所以由整除的結合律(引理)得 : pn+(m mod n) 可以提出一個公約數j, 所以m必定被j整除。既m的約數為j。
其中m=pn+(m mod n) 表示p倍的n加上1倍的(m mod n) =m,p為任意整數,1本來就是整數。所以m必定被j整除。
到此可知:n,m的一個公約數是j,因為 k=gcd(m,n),所以k>=j。第一步證明完畢。
// 第二步:證明j>=k即可。
由條件 k|n可知:n有一個約數為k;再找到 m mod n 的約數也為 k即可。
m mod n =m-qn;(其中p,q均為整數),又因為k=gcd(m,n):m,n的公約數是k(最大的),由整除的結合律可知:m mod n 被k整除,即找到了m mod n 的一個約數為k。
再由j=gcd(n, m mod n)所以j>=k;第二步證明完畢。
// 第三步:下結論
由於 k>=j,j>=k; 由常識可知k=j。再由k=gcd(m,n) 且 j= gcd(n, m mod n),故gcd(m,n) = gcd(n, m mod n)。證明完畢!
這個是我之前CSDN的文章,摘取過來。
