我們上學的時候都求過最大公約數,大概是小學 5 年級問題,但是我們好像沒有在哪個計算器上直接找到求最大公約數的按鍵,有時候兩個數字很大, 求起來還是挺麻煩的,但如果借助電腦這件事就容易了,今天我們一起在電腦上用小學一年級同學也會使用的Scratch軟件編程幫我們實現自動求最大公約數的功能。
先回顧一下求最大公約數的數學邏輯。求最大公約數是數學中的一個經典問題,數學家們想出來很多種方法,其中最早的一種方法叫輾轉相除法,出現在距今 2300 多年前的古希臘數學家歐幾裡得所著的《幾何原本》一書中,所以也被稱為歐幾裡得算法,它是目前仍然在使用的算法之一。下面我們就一起來看一下這個算法。
題目:A、B有最大公約數K,并且A > B,已知A, B來求K。
用輾轉相除法求K的過程:
- 如果A÷B能除盡,那麼B就是兩數最大公約數,否則先求A÷B的餘數C(C也是K的倍數)。
- B和餘數C最大公約數也是 K ,并且B>C(和題目一樣了哦)。
- 把B賦值給A, C賦值給B, 繼續第一步,直到能被除盡,此時除數B就是兩數的最大公約數。
2 推導過程
舉兩個例子:
1. 12和9兩個數求最大公約數。
- 12÷9=1......3
- 9÷3=3.....0
- 所以12和9的最大公約數就是3,注意這個3是第二步除數上的3,而不是商3,求最大公約數時每一步的商是沒有用的。
2. 5767和4453兩個數求最大公約數。
- 5767÷4453=1......1314
- 4453÷1314=3......511
- 1314÷511=2......292
- 511÷292=1......219
- 292÷219=1......73
- 219÷73=3......0
- 所以5767和4453兩個數的最大公約數是73。
說白了輾轉相除法求最大公約數就是:不斷求兩數相除的餘數,用除數代替被除數,餘數代替除數,直到餘數為0,此刻的除數就是最大公約數。
3 編程實現
知道輾轉相除法的原理,程序就很容易編出來了(如下圖),比單純學數學好的地方是,不管多大的數,會編程序的同學随時都可以求着玩,分分鐘出答案。
其實用輾轉相除法不但可以求最大公約數,隻要稍微變化一下,還可以将10進制轉化成2進制。後面我們會繼續寫文章來看看這個神奇的輾轉相除法如何對進制進行轉化。
,