题解 | #求最小公倍数#

求最小公倍数

http://www.nowcoder.com/practice/feb002886427421cb1ad3690f03c4242

题意整理

  • 给定两个不大于100的正整数。
  • 求它们的最小公倍数。

方法一(循环)

1.解题思路

  • 首先计算m和n中的较大者,用max记录。
  • 然后利用循环,在max到m*n之间找最小公倍数。
  • 如果既能被m整除又能被n整除,说明是最小公倍数,直接返回。

动图展示: alt

2.代码实现

import java.util.*;

public class Main {
    public static void main(String[] args) {
        //标准输入
        Scanner console = new Scanner(System.in);
        int m = console.nextInt();
        int n = console.nextInt();
        //计算最小公倍数
        int result = getCM(m, n);
        //输出结果
        System.out.println(result);
    }

    //计算最小公倍数
    public static int getCM(int m, int n){
        //计算m、n中较大者
        int max=Math.max(m,n);
        //从max到m*n之间找最小公倍数
        for(int i=max;i<=m*n;i++){
            //如果既能被m整除又能被n整除,说明是最小公倍数,直接返回
            if(i%m==0&&i%n==0){
                return i;
            }
        }
        return -1;
    }
    
}

3.复杂度分析

  • 时间复杂度:最坏情况下,总共需要循环mnmax+1m*n-max+1次,所以时间复杂度为O(mnmax)O(m*n-max)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论
题目有限制说是正整数,而且其中一个是负数的话,没有最小公倍数的。
2 回复 分享
发布于 2021-11-02 10:55
如果其中一个为负值,这个是不是就有问题了
点赞 回复 分享
发布于 2021-11-02 09:12
讲解清楚易懂,谢谢!
点赞 回复 分享
发布于 2021-12-07 08:11
点赞 回复 分享
发布于 2022-03-10 15:56
我是新手,请问最后return -1;是什么意思
点赞 回复 分享
发布于 2022-03-18 17:16
最后应该是return m*n;吧,他的没看懂,原谅我菜.....
点赞 回复 分享
发布于 2022-04-30 16:04
最后的return-1;错了; 应该是return m*n;
点赞 回复 分享
发布于 2022-05-01 15:53
return i;后面需要break;跳出循环,不然之后会输出到m*n,max(m,n)到m*n之间还是会有满足条件的i,例如15,6,最小是30,不跳出循环会输出90。-1那块应该需要定义个变量接受i的值吧
点赞 回复 分享
发布于 11-01 10:44 宁夏

相关推荐

CrazyBucket:我今天下午也做梦在招聘会上面试一家小厂,给自己气笑了
点赞 评论 收藏
分享
47 3 评论
分享
牛客网
牛客企业服务