更相減損法
此方法最適合在程式中應用
第一步:任意給定兩個正整數;判斷它們是否都是偶數。若是,則用2約簡;若不是則執行第二步。
第二步:以較大的數減較小的數,接著把所得的差與較小的數比較,並以大數減小數。繼續這個操作,直到所得的減數和差相等為止。
則第一步中約掉的若干個2與第二步中等數的乘積就是所求的最大公約數。
其中所說的「等數」,就是最大公約數。求「等數」的辦法是「更相減損」法。所以更相減損法也叫等值演算法。
例1.用更相減損術求98與63的最大公約數。
解:由於63不是偶數,把98和63以大數減小數,並輾轉相減:
98-63=35
63-35=28
35-28=7
28-7=21
21-7=14
14-7=7
所以,98和63的最大公約數等於7。
#include
using
namespace std;
intmain()
cout<' ';
//最後二者相等 輸出哪個都一樣
輾轉相除法
輾轉相除法:輾轉相除法是求兩個自然數的最大公約數的一種方法,也叫歐幾里德演算法。
例如,求(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。
可以寫成右邊的格式。
用輾轉相除法求幾個數的最大公約數,可以先求出其中任意兩個數的最大公約數,再求這個最大公約數與第三個數的最大公約數,依次求下去,直到最後乙個數為止。最後所得的那個最大公約數,就是所有這些數的最大公約數。
短除法定義法
從兩者較小的乙個開始,每次減1,直到得出滿足兩者都能被整除的數。
公式法該方法較為有效,尤其是在求出最大公約數的基礎上。
//在之前最大公約數的基礎上進行
#include
using
namespace std;
intmain()
cout<' ';
//最後二者相等 輸出哪個都一樣
//兩個數的乘積等於二者的最大公約數與最小公倍數乘積
g=k/m;
cout<}
求最大公約數,最小公倍數
歐幾里德遞迴演算法,大數對小數取餘直到小數為0,大數為最大公約數 param m param n return static int maxcommondivisor euclid recursion int m,int n return m 劉徽兩數相減直到兩數相等,等數為最大公約數 param ...
多種演算法求最大公約數和最小公倍數
演算法思路分析 求最大公約數的時候,在程式裡面定義了五個函式,輾轉相除法,輾轉相減法,窮舉法和menu函式,其中輾轉相除法用了兩種演算法包含了函式巢狀。最後定義menu,用了switch語句,當使用者選擇要運算的方法時候,系統呼叫函式運算出結果。求最大公倍數的時候,從上面幾個求最大公約數的方法裡面選...
求最大公約數和最小公倍數
本篇文章中求最大公約數的方法是輾轉相除法,又稱歐幾里德演算法 方法是用較大的數除以較小的數,求得餘數,將餘數變成除數,除數變成被除數,重複這個過程,直到餘數變成0。而求最小公倍數的方法則是用原本兩個數的乘積除以最大公約數。define crt select no warings include in...