题解 | #求最小公倍数#

求最小公倍数

https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3

import java.util.*;

/**
 * @author hll[yellowdradra@foxmail.com]
 * @description 求最小公倍数
 * @date 2021-05-12 23:12
 **/
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println(shortDivision(a, b));
        // System.out.println(successiveDivision(a, b));
    }

    /**
     * 公式法: 两个数的乘积 = 最大公因数 * 最小公倍数
     * a * b = (a, b) * [a, b]
     *
     * @param a a
     * @param b b
     * @return a和b的最小公倍数
     */
    public static int successiveDivision(int a, int b) {
        int max = Math.max(a, b);
        int min = Math.min(a, b);
        int remainder;
        int product = a * b;
        while (min != 0) {
            remainder = max % min;
            max = min;
            min = remainder;
        }
        return product / max;
    }

    /**
     * 短除法
     *
     * @param a a
     * @param b b
     * @return 最小公倍数
     */
    public static int shortDivision(int a, int b) {
        int res = 1;
        for (int i = 2; i <= Math.min(a, b); ) {
            if (a % i == 0 && b % i == 0) {
                a /= i;
                b /= i;
                res *= i;
                i = 2;
            } else {
                i++;
            }
        }
        return res * a * b;
    }
}

全部评论

相关推荐

牛大宝儿236:还没入职就PUA,[发火我之前遇到一个月给500块钱的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务