美文网首页基础编程50题
【题目06】最大公约数和最小公倍数

【题目06】最大公约数和最小公倍数

作者: Xplorist | 来源:发表于2017-03-25 15:18 被阅读24次

【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

package com.share.test01_10;

/**
 * 【程序6】题目:<br>
 * 输入两个正整数m和n,求其最大公约数和最小公倍数。  
 * 
 * @author brx
 */
public class Test06 {
    public static void main(String[] args) {
        test(148, 20);
    }

    /**
     * 思路:<br>
     * 先比较两个数的大小,用小的数找最大公约数,用大的数找最小公倍数<br>
     * 思路1:找最小公倍数通过递增判断去找<br>
     * 思路2: 找最小公倍数通过最大公约数去找
     * 
     * @param max
     *            两个数中的大的数
     * @param min
     *            两个数中的小的数
     * @param lcm
     *            最小公倍数(Least Common Multiple)
     * @param gcd
     *            最大公约数(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("最大公约数:" + i);
                gcd = i;
                break;
            }
        }

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

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

相关文章

网友评论

    本文标题:【题目06】最大公约数和最小公倍数

    本文链接:https://www.haomeiwen.com/subject/osscottx.html