递归方法实现最大公约数
| 最大公約數 |
最大公因數,也稱最大公約數、最大公因子,指兩個或多個整數共有約數中最大的一個
求最大公約數的方法有很多:質因數分解法、短除法、輾轉相除法、更相減損法等
接下來我們以輾轉相除法為例子來求兩個數的最大公約數
輾轉相除法
輾轉相除法:輾轉相除法是求兩個自然數的最大公約數的一種方法,也叫歐幾里德算法。
例如:
求 (319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。
用輾轉相除法求幾個數的最大公約數,可以先求出其中任意兩個數的最大公約數,再求這個最大公約數與第三個數的最大公約數,依次求下去,直到最后一個數為止。最后所得的那個最大公約數,就是所有這些數的最大公約數。
| 數據分析 |
由上文所述,可以使用輾轉相除法(歐幾里德算法)來求最大公約數,那么我們可以將319,377這兩個具體的數值用函數的參數來代替。接下來尋找他的規律
第一輪
將(319,377)看作是(a,b);
那么
319÷377=0(余319)可以看作是 a%b=x (余n);
- n為余數
(319,377)=(377,319);類似于 (a,b)= (b,n);
(即b=377,n=319)
- 注意: 第二319不是一開始a=319的數,而是a%b得到的余數
第二輪
377÷319=1(余58) 可以看作 a=377,b=319,a%b=x(余n);
(377,319)=(319,58);類似于 (a,b)= (b,n);
和上一輪對比可知,我們可以將 上一輪的b,n的值賦給第二輪的a,b,直到余數為0時,b為最大公約數,
這里可以使用遞歸方法實現
| 完成代碼 |
好運藏在努力里~ 加油!💖
總結
以上是生活随笔為你收集整理的递归方法实现最大公约数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Riak - 使用篇(1)
- 下一篇: 举个栗子!Tableau 技巧(107)