本文的主要內容是介紹一種兩個數最小公倍數(Lowest Common Multiple)的求解方法。算法
兩個數的公倍數能夠是無限多個,但最小公倍數只有一個。在前面的文章中介紹了兩數最大公約數的求解方法。這裏介紹一種兩個數的最小公倍數的求法。其基於的原理是兩個數的最小公倍數會等於兩個數的乘積除以兩個數的最大公約數的結果。即:spa
LCM(a, b) = (a * b) / GCD(a, b)code
下面結合最大公約數的求法使用C語言實現最小公倍數的求法。blog
1 /* 展轉相除法求最大公約數 */ 2 long GetGCD(long a, long b) 3 { 4 return (a % b == 0) ? b : GetGCD(b, a % b); 5 } 6 7 /* 求最小公倍數 */ 8 long GetLCM(long a, long b) 9 { 10 return a / GetGCD(a, b) * b; 11 }
注意:之因此先除以最大公約數再相乘是爲了減小溢出可能。ip