Java算法之求两个数的最大公约数与最小公倍数

输入两个正整数m和n,求其最大公约数和最小公倍数。

package cn.xuzihui;

public class Test {
    /**
     * @author xuzh
     * 欧几里得算术(辗转相除法)
     * 求两个数的最大公约数,每次用较大的数除较小数求余
     * 余数不为0,则让较大数等于较小数,较小书等于余数,继续相除求余
     * 当余数为0时,则这时的最小数为这两个数的最大公约数
     */
    public static void main(String args[]) {
        Test t = new Test();
        System.out.println("输入的两个数的最大公约数为:"+t.gy(12, 18));
        System.out.println("输入的两个数的最小公倍数为:"+t.gb(12, 18));
    }

    //求最大公约数的方法
    public int gy(int a, int b) {
        while(b != 0) {
            int temp = a % b;
            a = b;
            b = temp;
        }
        return a;
    }

    /**
     * 由于两个数的成绩等于它们的最大公约数×最小公倍数,即(a,b)×[a,b]=a*b,
     * 因此求出最大公约数后,自然就得出它们的最小公倍数
     */
    public int gb(int a, int b) {
        int m = (a*b) / gy(a, b);
        return m;
    }
}

输出结果:

输入的两个数的最大公约数为:6
输入的两个数的最小公倍数为:36

你可能感兴趣的:(Java)