题解 | #求最小公倍数#

求最小公倍数

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

import java.util.Scanner;

/**

  • HJ108 求最小公倍数
  • 输入 3 7
  • 输出 35
  • 方法一、短除法:所有公共除数与所有余数之积,即为最小公倍数。
  • 方法二、求最大公约数有两种方法 更相减损法和辗转相处法(即类似短除法) 最小公倍数在求出最大公约数后 两个数相乘除以最大公约数就是最小公倍数
  • 方法三、结合方法一和二,先求出a,b最大公约数x,再用a/x 乘上 b/x 即为最小公倍数
  • 以下我们用的是更相减损法
  • 更相减损法是拿两个数中的较大值减去较小值,然后在减数、被减数、差之间选取两个较小值继续相减,直到减数和被减数相等,得出的数就是最大公约数。
  • 例://更相减损术:
  • //8 10
  • //10 - 8=2
  • //8 - 2= 6
  • //6-2=4
  • //4-2=2
  • //2==2于是最大公约数就是2
  • /
    public class Main {
    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      while (sc.hasNext()){
          int a = sc.nextInt();
          int b = sc.nextInt();

// if(a%b==0) System.out.println(a);
// if(b%a==0) System.out.println(b);

        Main hj108 = new Main();
        int x = hj108.maxYue(a, b);

// 方法二、 int minBei = a*b/x;
// 方法三、
int minBei = a/x * b/x * x;
System.out.println(minBei);

    }

}

// 最大公约数方法
public int maxYue(int a,int b){
if(a == b) return a;
if(a>b){
int diff = a-b;
return maxYue(b,diff);
}else {
int diff = b-a;
return maxYue(a,diff);
}
}
}

全部评论

相关推荐

球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务