最大公約數和最小公倍數--java實現

洞拐洞拐發表於2016-05-01

程式碼:

   //最大公約數
   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!

相關文章