Java实现最大公约数和最小公倍数

用Java计算简单数学问题

例题:

需求:输入2个正整数,求这2个数的最大公约数和最小公倍数

代码如下:

public static void main(String[] args) {
    // 输入2个正整数,求最大公约数和最小公倍数
    // 最大公约数, 1> 第一步控制台输入
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入第一个正整数:");
    int n = sc.nextInt();
    System.out.println("请输入第二个正整数:");
    int m = sc.nextInt();
    // 2> 最大公约数小于等于最小的那个,取m和n中小的那个数
    if(n > 0 && m >0) {
        int min = (n < m) ? n : m;
        for (int i = min; i >= 1; i--) {
            if (n % i == 0 && m % i == 0) {
                System.out.println("最大公约数为:" + i);
                break;
            }
        }
        // 求最小公倍数,最小公倍数一定大于等于最大的那个数
        int max = (n > m) ? n : m;
        // 定义一个中间变量,用于存储每次max加倍后的值
        int num = max;
        // 最小公倍数肯定为max的倍数,最大为:(n*m),最小为:max(n,m)
        // 所以定义i为max的倍数,倍数i一定小于等于n和m中小的那个,因为最小公倍数最大为2个数乘积
        for (int i = 1; i < n; i++) {
            if (num % m == 0 && num % n == 0) {
                System.out.println("最小公倍数为:" + num);
                break;
            } else {
                num = max * i;
            }
        }
    } else {
        System.out.println("输入数据不合法,请输入正整数!");
    }
}

运行效果:

请输入第一个正整数:
6
请输入第二个正整数:
9
最大公约数为:3
最小公倍数为:18

Process finished with exit code 0

总结:

以上就是最大公约数和最小公倍数的求法了。