第一個最大公約數使用的2300年前被髮明的歐幾里得算法求得,大致原理爲:
如果有兩個非負整數p、q,若q==0,則最大公約數爲p;否則,p和q的最大公約數就是p除以q所得的餘數和q的最大公約數。
第二個最小公倍數更簡單
如果有兩個非負整數p、q,若q==0,則最大公約數爲p;否則,p和q的最大公約數就是p除以q所得的餘數和q的最大公約數。
關鍵代碼如下:
//最大公約數(Greatest Common Divisor)
public int gcd(int p,int q){
if(q == 0) return p;
return gcd(q, p % q);
}
//最小公倍數(Least Common Multiple)
public int lcm(int p,int q){
int pq = p * q;
return pq / gcd(p,q);
}