程式碼:
//最大公約數 public int gcd(int p,int q){ if(q == 0) return p; return gcd(q, p % q); } //最小公倍數 public int lcm(int p,int q){ int pq = p * q; return pq / gcd(p,q); }
測試:
@Test public void go(){ int p = 5,q =17; System.out.println(p+"和"+q+"的最大公約數:"+gcd(p,q)); System.out.println(p+"和"+q+"的最小公倍數:"+lcm(p,q)); } 執行結果: 5和17的最大公約數:1 5和17的最小公倍數:85
原理:
第一個最大公約數使用的2300年前被髮明的歐幾里得演算法求得,大致原理為:
如果有兩個非負整數p、q,若q==0,則最大公約數為p;否則,p和q的最大公約數就是p除以q所得的餘數和q的最大公約數。
第二個最小公倍數更簡單。
公式:最小公倍數=兩整數的乘積÷最大公約數
是不是So Easy!