More Related Content Similar to Homework 5 (6) Homework 52. 歐幾里德算法 , ( Euclidean algorithm )又名 輾轉相除法 乃求兩個正整數之 最大公因數 的 算法 。這是已知最古老的算法 , 其可追溯至 前 300 年 。首次出現於歐幾里德的《 幾何原本 》(第 VII 卷,命題 i 和 ii )中,而在中國則可以追溯至 東漢 出現的《 九章算術 》。這算法並不需要把二數作 質因數分解 。 假設 a, b 為兩整數( Integer ),且 a > b 。那麼根據除法算法 ( Division Algorithm ),我們可找到 q1 和 r1 使 a = q1b + r1 ,其中 0 < r1 < b 。我們又可以找到 q2 和 r2 使 b = q2r1 + r2 ,其中 0 < r2 < r1 。 這樣反覆的把兩數的餘數( Remainder )互除,輾轉相除法因而得名。最終到某一數整除另一數為止,那整除的數便是最大公因子。我們更可用代入法,計出 ax + by = (a,b) 的解 x,y 。 3. 如求 105 和 234 的最大公因子: 因為 234 > 105 ,我們設 a = 234 , b = 105 ,則有 234 = 2*105 + 24 ,我們又有 105 = 4*24 + 9 ,接下來 24 = 2*9 + 6 ,再來 9 = 1*6+3 ,最後 6 = 2*3 ,所以( a,b ) = 3 。 那麼 ( a,b ) = 3 = 9 - 1*6 ,而 6 = 24 - 2*9 ,( a,b ) = 9 - 1* ( 24 - 2*9 ) = 3*9 - 24 而 9 = 105 - 4*24 ,所以( a,b ) = 3* ( 105 - 4*24 ) - 24 = 3*105 - 13*24 ,而 24 = 234 - 2*105 ,所以最後( a,b ) = 3*105 - 13* ( 234 - 2* 105 ) = 31*105 - 13*234 ,即 (x,y) = (31, -13) 。 其實在計算型如 ax + by = c 的方程式時,輾轉相除法是相當重要的工具。 4. 演算法已知二個正整數 m 及 n ,找出此二數的最大公因數(也就是能同時整除 m 及 n 的最大正整數) E1. (找出餘數) 求出 m 除以 n 的餘數,並記錄於 r 。 E2. (餘數為 0 嗎?) 如果 r=0 則停止,輸出 n 為 GCD 。 E3. (互換) 設定 m=n,n=r ,並跳至步驟 E1 。