1. 程式人生 > 其它 >求最大公約數的虛擬碼-20211318

求最大公約數的虛擬碼-20211318

作業要求

  1. 上網查詢什麼是求兩個數的最大公約數的歐幾里得演算法(輾轉相除法),提交演算法說明和網上鍊接。
  2. 參考教材,用虛擬碼(英語或漢語)實現歐幾里得演算法(輾轉相除法),提交虛擬碼。
  3. 選擇幾組資料,手動走一下虛擬碼,測試你寫的虛擬碼是否正確,提交測試過程截圖。

歐幾里得演算法

演算法說明

以除數和餘數反覆做除法運算,當餘數為 0 時,取當前算式除數為最大公約數

示例:

1997 / 615 = 3 (餘 152)
615 / 152 = 4(餘7)
152 / 7 = 21(餘5)
7 / 5 = 1 (餘2)
5 / 2 = 2 (餘1)
2 / 1 = 2 (餘0)
至此,最大公約數為1

證明

a可以表示成a = kb + r(a,b,k,r皆為正整數,且r
假設d是a,b的一個公約數,記作d|a,d|b,即a和b都可以被d整除。
而r = a - kb,兩邊同時除以d,r/d=a/d-kb/d,由等式右邊可知m=r/d為整數,因此d|r
因此d也是b,a mod b的公約數。
因(a,b)和(b,a mod b)的公約數相等,則其最大公約數也相等,得證。

參考連結百度百科

虛擬碼

虛擬碼的實現與測試