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

时间:2022-05-26 00:34:56

辗除法

/*在循环中,只要除数不等于0,用较大数除以较小的数,
*将小的一个数作为下一轮循环的大数,
*取得的余数作为下一轮循环的较小的数,
*如此循环直到较小的数的值为0,返回较大的数,
*此数即为最大公约数,最小公倍数为两数之积除以最大公约数。*/

public class Max_Min {
    public static void main(String[] args) {
        System.out.println("请输入两个数");
        Scanner scan =  new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();
        int m = division(a,b);
        int n = a*b/m;
        System.out.println("最小公倍数"+n);
        System.out.println("最大公约数"+m);
        scan.close();
    }
    public static int division(int a,int b) {
        int x;
        if(a<b) {
            x = a;
            a = b;
            b = x;
        }
        while(b!=0) {
            if(a==b) {
                return 1;
            }else {
                int k = a%b;
                a = b;
                b = k;
                //能整除则返回小者,它就是最大公约数
            }
        }
        return a;
    }
}