java题目 HJ108 求最小公倍数

描述

正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
 
数据范围:1 \le a,b \le 100000 \1a,b100000 

输入描述:

输入两个正整数A和B。

输出描述:

输出A和B的最小公倍数。

示例1

输入:
5 7
输出:
35

示例2

输入:
2 4
输出:
4

 

复制代码
import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            
            int max = Math.max(a, b);
            int tmp = max;
            int n = Math.min(a, b);
            for(int i =1; i<=n; i++) {
                if(tmp % a ==0 && tmp % b ==0) {
                    break;
                } else {
                    tmp = max * i;
                }
            }
            System.out.println(tmp);
        }
    }
}
复制代码

 

 

方法二

计算a = 1071和b = 462的最大公约数的过程如下:从1071中不断减去462直到小于462(可以减2次,即商q0 = 2),余数是147:

1071 = 2 × 462 + 147.

然后从462中不断减去147直到小于147(可以减3次,即q1 = 3),余数是21:

462 = 3 × 147 + 21.

再从147中不断减去21直到小于21(可以减7次,即q2 = 7),没有余数:

147 = 7 × 21 + 0.

此时,余数是0,所以1071和462的最大公约数是21。

复制代码
 1 import java.io.*;
 2 import java.util.*;
 3 
 4 
 5 /*
 6 最小公倍数= axb/gcd(a,b)
 7 */
 8 public class Main{
 9     public static void main(String[] args) throws IOException {
10         Scanner sc = new Scanner(System.in);
11         while(sc.hasNextInt()) {
12             int a = sc.nextInt();
13             int b = sc.nextInt();
14             int c = a*b / gcd(a, b);
15             System.out.println(c);
16         }
17     }
18     public static int gcd(int a, int b) {
19         if(b == 0)
20             return a;
21         else
22             return gcd(b, a%b);
23     }
24 }
复制代码

 

posted @   海漠  阅读(163)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示