1. 程式人生 > >GCD&LCM-求最大公約數&最小公倍數

GCD&LCM-求最大公約數&最小公倍數

1. 定義

最大公約數,也稱最大公因數、最大公因子,指兩個或多個整數共有約數中最大的一個。求最大公約數有多種方法,常見的有質因數分解法、短除法、輾轉相除法、更相減損法。
最小公倍數(Least Common Multiple,縮寫L.C.M.),如果有一個自然數a能被自然數b整除,則稱a為b的倍數,b為a的約數,對於兩個整數來說,指該兩數共有倍數中最小的一個。計算最小公倍數時,通常會藉助最大公約數來輔助計算。

2. 輾轉相除法(歐幾里德演算法)求最大公約數

核心:
把上一輪有餘數的除法計算中, 除數變為下一輪計算的被除數, 餘數變為下一輪計算的除數, 一直這樣計算下去, 直到最後一次計算餘數為零, 在最後一輪計算中的被除數,即為所求的最大公約數
演算法實現:

//dividend:被除數,兩者之間較大的數
//divisor:除數,兩者之間較小的數
int GCD(int dividend, int divisor) ;
int GCD(int dividend, int divisor)  
{
 int temp;
 while (divisor>0)
 {
  temp = dividend % divisor;
  dividend = divisor;
  divisor = temp;
 }
 return dividend;
}

3. 最小公倍數

最小公倍數常常藉助於最大公約數的計算——最小公倍數等於兩數之積除以其最大公約數

//dividend:被除數,兩者之間較大的數
//divisor:除數,兩者之間較小的數
int LCM(int dividend, int divisor) ;
int LCM(int dividend, int divisor)
{ 
 return dividend*divisor/GCD(dividend, divisor);
}