求最大公約數和最小公倍數的多種方法

2021-10-10 19:14:11 字數 1297 閱讀 3291

更相減損法

此方法最適合在程式中應用

第一步:任意給定兩個正整數;判斷它們是否都是偶數。若是,則用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...