【題目06】最大公約數(shù)和最小公倍數(shù)

【程序6】
題目:輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。

package com.share.test01_10;

/**
 * 【程序6】題目:<br>
 * 輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。  
 * 
 * @author brx
 */
public class Test06 {
    public static void main(String[] args) {
        test(148, 20);
    }

    /**
     * 思路:<br>
     * 先比較兩個數(shù)的大小,用小的數(shù)找最大公約數(shù),用大的數(shù)找最小公倍數(shù)<br>
     * 思路1:找最小公倍數(shù)通過遞增判斷去找<br>
     * 思路2: 找最小公倍數(shù)通過最大公約數(shù)去找
     * 
     * @param max
     *            兩個數(shù)中的大的數(shù)
     * @param min
     *            兩個數(shù)中的小的數(shù)
     * @param lcm
     *            最小公倍數(shù)(Least Common Multiple)
     * @param gcd
     *            最大公約數(shù)(Greatest Common Divisor)
     */
    public static void test(int m, int n) {
        int max = 0;
        int min = 0;
        max = m > n ? m : n;
        min = m < n ? m : n;
    
        int gcd = min;
        for (int i = min; i > 1; i--) {
            if (max % i == 0 && min % i == 0) {
                System.out.println("最大公約數(shù):" + i);
                gcd = i;
                break;
            }
        }

        int lcm = max;
        while (true) {
            if (lcm % max == 0 && lcm % min == 0) {
                System.out.println("最小公倍數(shù):" + lcm);
                break;
            }
            lcm++;
        }

        lcm = max * min / gcd;
        System.out.println("最大公倍數(shù):" + lcm);
    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容