日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

辗转相除法的证明

發布時間:2023/12/14 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 辗转相除法的证明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

輾轉相除法(歐幾里得算法)

該算法常用于計算兩數的最大公約數。算法表示如下:
現有A, B兩正整數,其中A為較大者,A>=B; 通過一下算法求其最大公約數
1> A / B = C … D 使用較大者除以較小者,獲得余數D是否為0,若為0,則最大公約數為除數B
2> 若不能整除,則B作為較大者,余數D作為較小者(由除法性質知B >= D),重復該算法

豎式計算如下:

設A = 899, B = 493。

1 | 899 | 493 || 493 |---------------- =》 | 406 |1 | 899 | 493 | 1| 493 | 406 |---------------- =》| 406 | 87 |4 | 406 | 87 || 87 | ---------------- =》| 58 |4 | 406 | 87 | 1| 87 | 58 |---------------- =》| 58 | 29|2 | 58 | 29| | 29 | ---------------- =》 29| 0 |

輾轉相除法證明

到此,我們發現該算法確實能夠很快的求解兩數的最大公約數問題,但是為什么這個算法是正確的,如何通過合理的證明,來驗證該算法的合理性呢?

證明過程如下:

現有正整數A, B。 其中A >= B; 有除法過程A / B = K … D 其中K為商,D為余數。 使用 A | B 表示 A被B整除
求證:A, B 的最大公約數 等于 B 與余數 D的最大公約數

設 A , B 的最大公約數為 C, 側有 A | C, 與 B | C
有除法定義知:BK + D = A,且 B | C 所以:BK | C
有 A | C 即 (BK + D) | C 得 D | C
到此可證,若 C為A和B的公約數,則必為B和D的公約數。由于終止條件為兩者求余為0,即 A = KB則得到最終的最大公約數。

更相減損術

九章算術中,使用減法進行計算,求取最大公約數的算法。與輾轉相除法如出一轍

可半者半之,不可半者,副置分母、子之數,以少減多,更相減損,求其等也。以等數約之。
白話文譯文:
(如果需要對分數進行約分,那么)可以折半的話,就折半(也就是用2來約分)。如果不可以折半的話,那么就比較分母和分子的大小,用大數減去小數,互相減來減去,一直到減數與差相等為止,用這個相等的數字來約分。

Stein算法

輾轉相除法依賴于出觸發運算,對于64位現代計算機能夠很快處理,但對于更大的數,超出浮點計算能力時,計算效率將會急劇下降。比如在一個64位字寬的浮點處理器上,計算一個128位甚至更長的數字,需要在除法算法上層做很多運算,而不能直接有機器在幾條指令內求解。

stein算法對大數求最大公約數做了優化。

參考

GCD(Greatest Common Divisor)最大公約數

總結

以上是生活随笔為你收集整理的辗转相除法的证明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。