歐幾里德算法LCM

若想了解歐幾里德算法GCD(求兩個數的最大公約數)請點擊以下鏈接:
http://blog.csdn.net/sand8o8time/article/details/76690342

其實對於求兩個數的最小公倍數和最大公約數的算法一樣,只需要用這兩個數的乘積除以這兩個數的最大公約數就行了即:LCM(a,b) = a * b / GCD(a,b)
因爲最大公約數就兩個數的所有相同質數相乘,最小公倍數就是扣除一次所有想同的質數全部相乘,補過來剛好,所以兩個數的乘積除以他們的最大公約數是最小公倍數即:
假設M = a * b , N = a * c,GCD(M,N)= a ,則LCM(M,N)= a * b * c,
所以A * B=a * b * a * c = a * a * b * c = GCD(A,B) * LCM(A,B)

以下是核心代碼:

int gcd(int a , int b)      //遞歸法:歐幾里得算法,計算最大公約數
{
    return a==0?b:gcd(b%a,a);
}
int lcm(int a, int b)
{
	return a/gcd(a,b)*b; 	//這裏選擇先除以gcd(a,b)是爲了防止數太大是超過int類型的存儲能力   
}
發佈了30 篇原創文章 · 獲贊 92 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章