java题目 HJ108 求最小公倍数
描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
数据范围:1 \le a,b \le 100000 \1≤a,b≤100000
输入描述:
输入两个正整数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 }
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix