求最大公約數偽代碼


  1. 上網查找什么是求兩個數的最大公約數的歐幾里得算法(輾轉相除法),提交算法說明和網上鏈接。
    輾轉相除法又叫歐幾里得算法,是歐幾里得最先提出來的.輾轉相除法的實現,是基於下面的原理(在這里用(a,b)表示a和b的最大公因數):
      (a,b)=(a,ka+b),其中a、b、k都為自然數.………………①
      也就是說,兩個數的最大公約數,將其中一個數加到另一個數上,得到的新數,其公約數不變,比如(4,6)=(4+6,6)=(4,6+2×4)=2.要證明這個原理很容易:如果p是a和ka+b的公約數,p整除a,也能整除ka+b.那么就必定要整除b,所以p又是a和b的公約數,從而證明他們的最大公約數也是相等的.
      基於上面的原理,就能實現我們的迭代相減法:
      (78,14)=(64,14)=(50,14)=(36,14)=(22,14)=(8,14)=(8,6)=(2,6)=(2,4)=(2,2)=(0,2)=2
      基本上思路就是大數減去小數,一直減到能算出來為止,在作為練習的時候,往往進行到某一步就已經可以看出得值.迭代相減法簡單,不過步數比較多,實際上我們可以看到,在上面的過程中,由(78,14)到(8,14)完全可以一步到位,因為(78,14)=(14×5+8,14)=(8,14),由此就誕生出我們的輾轉相除法.
      用輾轉相除法求(a,b).設r0=b,r1=a,反復運用除法算式,得到一系列整數qi,ri和下面的方程:
      相當於每一步都運用原理①把數字進行縮小,上面右邊就是每一步對應的縮小結果,可以看出,最后的余數rn就是a和b的公約數.迭代相減法和輾轉相除法在本質上是一樣的,相對來說,減法比較簡單(需要10步),但是除法步數少(僅需4步)

參考網址:https://blog.csdn.net/qq_41575507/article/details/90752742?

  1. 參考教材,用偽代碼(英語或漢語)實現歐幾里得算法(輾轉相除法),提交偽代碼。
    num1 = int(input("請輸入第一個數字:"))
    num2 = int(input("請輸入第一個數字:"))
    m = max(num1, num2)
    n = min(num1, num2)
    r = m % n
    while r != 0:
    m = n
    n = r
    r = m % n
    print(num1, "和", num2, "的最大公約數為", n)

  2. 選擇幾組數據,手動走一下偽代碼,測試你寫的偽代碼是否正確,提交測試過程截圖。
    選擇數組:200,100 30,7 64,1024 測試結果如圖



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM