题解 | #求最小公倍数#

求最小公倍数

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

(在我了解欧几里德算法之前)

我的思路:1. 寻找两数能除的一个数i,然后都除以该数;

                 2.把操作一的两个数再重复①;

                3.当①中没有合适的数时就是递归终止,此时返回两数之积(两数都是除掉了最大公约数)。

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    private static int leastCommonMultiple(int num1, int num2) {
	  	//特殊情况:大数能整除小数
        if (Math.max(num1, num2) % Math.min(num1, num2) == 0) {
            return Math.max(num1, num2);
        //寻找两数能除的一个数i
        for (int i = 2; i <= num1; i++) {
            if (num1 % i == 0 && num2 % i == 0) {
                return leastCommonMultiple(num1 / i, num2 / i) * i;
            }
        }
		//多想一点:如果是(return 1;),那么就是寻找最大公约数
        return num1 * num2;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        System.out.println(leastCommonMultiple(n1, n2));
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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