最大公約數、最小公倍數、輾轉相除法的求解和證明

  兩個正整數的最大公約數(Greatest Common Divisor,GCD)在計算機中通常使用輾轉相除法計算,最小公倍數(Least Common Multiple, LCM)可以使用GCD來計算。下面首先介紹GCD和LCM。然後介紹輾轉相除法的計算形式,並證明爲什麼可以得出GCD。

最大公約數

性質

  若正整數$\{a_1,a_2,...,a_n\}$的GCD爲$r$,則$\{a_1/r,a_2/r,...,a_n/r\}$互質(GCD爲1)。

充分性

  假設正整數$\{a_1,a_2,...,a_n\}$的GCD爲$r$,則它們可以被表示爲$\{p_1r,p_2r,...,p_nr\}$。若$\{p_1,p_2,...,p_n\}$不互質,有最大公約數$r_1\ne 1$,則$\{a_1,a_2,...,a_n\}$的最大公約數爲$r_1r$與假設不符。

必要性

  顯然成立:一系列正整數除以某一數,如果結果互質,則這個數是這些正整數的GCD。

多個數的最大公約數

  任意正整數$\{a_1,a_2,...,a_n\}$都可以被它們對應的所有質因子的乘積表示。將它們所有質因子分別表示爲集合$A_1,A_2,...,A_n$(給重複質因子加下標),則它們的最大公約數的質因子爲

$\begin{aligned}&A_1\cap A_2\cap...\cap A_n\\=&(...((A_1\cap A_2)\cap A_3)\cap...)\cap A_n\end{aligned}$

  因此多個數的GCD可以通過,兩兩數之間的GCD迭代求出。兩個正整數的GCD則可以使用輾轉相除法解決。

最小公倍數

性質

  若正整數$\{a_1,a_2,...,a_n\}$的LCM爲$R$,則$\{R/a_1,R/a_2,...,R/a_n\}$互質。

充分性

  假設$\{a_1,a_2,...,a_n\}$的LCM爲$R$,若$\{R/a_1,R/a_2,...,R/a_n\}$不互質,有公因子$r$,則有更小的公倍數$R/r$,與假設不符。

必要性

  對於正整數$\{a_1,a_2,...,a_n\}$,假設存在正整數$R_1\ne R_2$,使得$\{R_1/a_1,R_1/a_2,...,R_1/a_n\}$互質,且$\{R_2/a_1,R_2/a_2,...,R_2/a_n\}$互質。

  若$R_1/R_2=k$爲正整數,則

$\{R_1/a_1,R_1/a_2,...,R_1/a_n\}=\{kR_2/a_1,kR_2/a_2,...,kR_2/a_n\}$

  有$k$爲因子,不互質,與假設不符。

  若$R_1/R_2=k$不是整數,則

$\{R_1/a_1,R_1/a_2,...,R_1/a_n\}=\{kR_2/a_1,kR_2/a_2,...,kR_2/a_n\}$

  不是正整數,與假設不符(互質前提是正整數)。  

  綜上不可能存在兩個或以上不同的$R$,使得$\{R/a_1,R/a_2,...,R/a_n\}$互質。

  又由於最小公倍數$R$一定存在,使得$\{R/a_1,R/a_2,...,R/a_n\}$互質。所以這樣的$R$只存在一個,且是LCM。

多個數的最小公倍數

  上面證明得出,對於正整數$\{a_1,a_2,...,a_n\}$,只要獲得某個$R$,使得$\{R/a_1,R/a_2,...,R/a_n\}$互質,這個$R$就是LCM。

  將正整數表示爲GCD和對應互質數的乘積

$\{a_1,a_2,...,a_n\}=\{p_1r,p_2r,...,p_nr\}$

  令$R=p_1p_2...p_nr$,可以發現$\{R/a_1,R/a_2,...,R/a_n\}$互質(證明寫下面)。因此$\{a_1,a_2,...,a_n\}$的LCM爲

$\displaystyle R=p_1p_2...p_nr=\frac{a_1a_2...a_n}{r^{n-1}}$

互質證明

  將$\{p_1,p_2,...,p_n\}$的所有質因子分別表示爲集合$A_1,A_2,...,A_n$,顯然有$A_1\cap A_2\cap...\cap A_n=\varnothing$。設全集$E=A_1\cup A_2\cup...\cup A_n$,則$\{R/a_1,R/a_2,...,R/a_n\}$的質因子集合爲$\sim A_1,\sim A_2,...,\sim A_n$。由於

$\begin{aligned}&\sim A_1\cap\sim A_2\cap...\cap\sim A_n\\=&\sim(A_1\cup A_2\cup...\cup A_n)\\=&\sim E\\=&\varnothing\end{aligned}$

  所以$\{R/a_1,R/a_2,...,R/a_n\}$互質。

輾轉相除法

  輾轉相除法通過迭代計算兩個正整數的GCD。每次用較小數對較大數取餘,然後將較小數賦值到較大數,餘數賦值到較小數,直到餘數爲0,此時較小數爲最大公約數。

例子

  計算319,377的最大公約數(算法迭代過程):

 迭代   較大數   較小數   餘數 
0 - 377 319
1 377 319 58
2 319 58 29
3 58 29 0

  得出最大公約數爲29。

證明  

  假設正整數$a>b$,計算它們的最大公約數。首先計算出它們的餘數$t$:

$a \, \text{mod}\, b = t$

  則$a$可以表示爲:

$a=pb+t$

  其中$p$爲$a/b$的正整數商。若$t=0$,則顯然$b$爲$a,b$的最大公約數。若$t\neq 0$,我們只需證明$\{a,b\}$與$\{b,t\}$有相同的最大公約數,迭代就可以進行下去。

  將$\{a,b\}$的公約數表示爲$r_1\in R_1$,$R_1=\{a,b的公約數\}$,則有:

$t =a-pb= p_ar_1-pp_br_1=(p_a-pp_b)r_1$

  顯然$\{a,b\}$的公約數$r_1$也是$t$的約數,因而$r_1$是$\{a,b,t\}$的公約數,有$R_1\subseteq R$,$R=\{a,b,t的公約數\}$。又因爲$\{a,b,t\}$的公約數一定是$\{a,b\}$的公約數,所以有$R\subseteq R_1$。因此$R_1=R$。

  將$\{b,t\}$的公約數表示爲$r_2\in R_2$,$R_2=\{b,t的公約數\}$,則有:

$a =pb+t= pp_{b1}r_2+p_tr_2=(pp_{b1}+p_t)r_2$

  顯然$\{b,t\}$的公約數$r_2$也是$a$的約數,因而$r_2$是$\{a,b,t\}$的公約數,有$R_2\subseteq R$。與上同理,得出$R_2 = R$。

  於是$R_1=R=R2$,因此,$\{a,b\}$與$\{b,t\}$有相同的最大公約數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章