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

2021-08-26 18:59:16 字數 1184 閱讀 1175

//書本第四章第01題,分別求出兩個整數的最大公約數和最小公倍數,用主函式呼叫兩個函式,並輸出結果,兩個整數由鍵盤輸入。

/*       最小公倍數_--解法一

借助最大公約數求最小公倍數

步驟:一、利用輾除法或其它方法求得最大公約數;

二、 最小公倍數等於兩數之積除以最大公約數。

最小公倍數--解法二

質因數分解

舉例:12和27的最小公倍數   12=2×2×3   27=3×3×3

必須用裡面數字中的最大次方者,像本題有3和3的立方,

所以必須使用3的立方(也就是3*3*3),不能使用3

所以:   2×2×3×3×3=4×27=108

兩數的最小公倍數是108

最大公約數原理

如果有乙個自然數a能被自然數b整除,則稱a為b的倍數,b為a的約數。

幾個自然數公有的約數,叫做這幾個自然數的公約數。公約數中最大的乙個公約數,稱為這幾個自然數的最大公約數。

例: 在2、4、6中,2就是2,4,6的最大公約數。

早在西元前300年左右,歐幾里得就在他的著作《幾何原本》中給出了高效的解法——輾轉相除法。

輾轉相除法使用到的原理很聰明也很簡單,假設用f(x, y)表示x,y的最大公約數,

取k = x/y,b = x%y,則x = ky + b,

如果乙個數能夠同時整除x和y,則必能同時整除b和y;

而能夠同時整除b和y的數也必能同時整除x和y,

即x和y的公約數與b和y的公約數是相同的,其最大公約數也是相同的,

則有f(x, y)= f(y, y % x)(y > 0),

如此便可把原問題轉化為求兩個更小數的最大公約數,

直到其中乙個數為0,剩下的另外乙個數就是兩者最大的公約數。

例如,12和30的公約數有:1、2、3、6,其中6就是12和30的最大公約數。

*///第四章第01題,分別求出兩個整數的最大公約數和最小公倍數,用主函式呼叫兩個函式,並輸出結果,兩個整數由鍵盤輸入。

#includeusing namespace std;

//輾轉相除法

inline int gongyue(int x,int y)

int main()

{//輸入整數

cout<<"請輸入兩個整數並用空格間開:";

int a,b;

cin>>a>>b;cout<

求最大公約數,最小公倍數

歐幾里德遞迴演算法,大數對小數取餘直到小數為0,大數為最大公約數 param m param n return static int maxcommondivisor euclid recursion int m,int n return m 劉徽兩數相減直到兩數相等,等數為最大公約數 param ...

求最大公約數和最小公倍數

本篇文章中求最大公約數的方法是輾轉相除法,又稱歐幾里德演算法 方法是用較大的數除以較小的數,求得餘數,將餘數變成除數,除數變成被除數,重複這個過程,直到餘數變成0。而求最小公倍數的方法則是用原本兩個數的乘積除以最大公約數。define crt select no warings include in...

求最大公約數和最小公倍數

輾轉相除法求最大公因數 輾轉相除法 簡單來說 兩個數,用較大的數除以較小的數,得到第一餘數,在用較小的數除以第乙個餘數,得到第二餘數,在用第二個餘數除以第一餘數,重複過程,直到到餘數為0 那麼最後乙個餘數就是這兩個數的最大公約數 舉例說明 a 36,b 10 1.36除以10得3,餘6 2.10除以...