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

 

 

复制代码
public static void 第六题() {                
    int m = input.nextInt();                 //键入m和n的值
    int n = input.nextInt();
    for (int a = m > n ? n : m; a > 0; a--) {        //设变量a为m和n中较小的那个值,a递减,到0为止(递增的话会出现所有的公因数,不好取最后一个值)
        if (m % a == 0 & n % a == 0) {            //判断a是否为m和n的公因数,
            System.out.println("m和n的最大公约数是" + a);    //若是,直接输出a的值,因递减,则第一次输出的就是最大公约数
            break;                          //取得第一次循环的最大公约数之后直接跳出循环
        }
    }
    aa:
    for (int b = 1; b <= m; b++) {                //设变量b为1到m之间的任意一个数,b递增
        for (int i = 1; i <= n; i++) {              //设变量i为1到n之间的任意一个数,i递增
            if (n * b == m * i) {                 //判断交叉相乘的积是否相等,若是,则为m和n的公倍数
                System.out.println("m和n的最小公倍数是" + n * b);     //输出最小公倍数的值,即交叉相乘的积,n*b=m*i,两值皆可
                break aa;                          //循环一次就跳出,因为是递增,所以第一个符合条件的值即最小公倍数
            }
        }
复制代码