华为-求最小公倍数

(java实现)


题目描述:

正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

输入描述:

输入两个正整数A和B。

输出描述:

输出A和B的最小公倍数。
示例1:

输入

5 7

输出

35

问题分析:

两种思路
思路一:分别求出两个数的约数,然后再删除重复的约数,最后将去重后的约数相乘,所得即是最小公倍数。
思路二:两数相乘,再除以最大公约数,所得即是最小公倍数。但关键点在于求最大公约数,这个可以使用连续求余数法(具体数学定理)。
参考代码是依据思路二来实现的。

相关知识:


算法实现:

参考代码:

import java.util.*;
public class Main {

    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        int na = input.nextInt();
        int nb = input.nextInt();
        int maxDivisor = getMaxDivisor(na,nb);
        System.out.println(na*nb/maxDivisor);
    }

    public static int getMaxDivisor(int na, int nb)
    {
        int tmp;
        if (na < nb)
        {
            tmp = na;
            na = nb;
            nb = tmp;
        }
        while(na%nb != 0)
        {
            tmp = na%nb;
            na = nb;
            nb = tmp;
        }
        return nb;
    }
}
全部评论

相关推荐

我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务