题解 | #求最小公倍数#

求最小公倍数

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

首先通过一个小技巧保证被核心方法处理的参数中a一定是大于b的 接着进行辗转相除,使用递归进行实现,主要的思想是为了如果a和b中都有一个数i,那么i只用出现一次,所以就直接去求a/i,b/i的最大公倍数,并且将结果乘以i,那么最后的结果就是a,b的最大公倍数

import java.util.Scanner;

public class Main{
    
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt(), b = sc.nextInt();
        int ans = solution(a, b);
        System.out.println(ans);
    }
    
    public static int solution(int a, int b){
        if(a < b){
            return solution(b, a);
        }
        // 肯定有 a >= b
        if(a % b == 0){
            return a;
        }
        for(int i = 2; i < b; i++){
            if(a % i == 0 && b % i == 0){
                return i * solution(a/i, b/i); 
            }
        }
        return a * b;
    }
    
}
全部评论

相关推荐

Wy_m:只要不是能叫的上名的公司 去实习没有任何意义 不如好好沉淀自己
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务