题解 | #求最小公倍数#

求最小公倍数

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

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int a = 0;
        int b = 0;
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            if(a == 0){
                a = in.nextInt();
            } else if(b == 0){
                b = in.nextInt();
            }
        }

        int result = result(a, b);
        System.out.println(result);
    }

    private static int result(int a, int b) {

        boolean min = a < b;
        int c = min ? a : b;
        if (min) {
            int t = b / a;
            int m = b % a;
            if (t > 0 && m == 0) {
                return b;
            }
        }

        int temp_a = a;
        int temp_b = b;
        List<Integer> list = new LinkedList<>();
        for (int i = 2; i < c; i++) {
            int t_a = temp_a / i;
            int m_a = temp_a % i;
            int t_b = temp_b / i;
            int m_b = temp_b % i; 
            if (t_a > 0 && m_a == 0 && t_b > 0 && m_b == 0) {
                temp_a = temp_a/i;
                temp_b = temp_b/i;
                list.add(i);
                i =1;
            }
        }

        if(list.size() == 0){
            return a*b;
        }

        int mult = 1;
        for(Integer i : list){
            mult *= i;
        }

        int t_a = a / mult;
        int t_b = b / mult;
        
        return mult * t_a * t_b;
    }
}

#努力刷题下#
雪域灰灰刷题笔记 文章被收录于专栏

雪域灰灰刷题笔记

全部评论

相关推荐

07-09 18:33
门头沟学院 Java
这么逆天每年都有人去???&nbsp;填多益网申就是大型的服从性测试
鲁大牛:辅导员在群里发了这个公司我就申了一下。网申居然要写当场开摄像头写两篇不少于三百字的作文。太逆天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务