题目描述:正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数
解题思路1:暴力法
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println(a+"和"+b+"的最小公倍数为:"+mintime(a,b));
}
private static int mintime(int a, int b) {
if(a<b){
int temp=a;
a=b;
b=temp;
}
if(a%b==0){
return a;
};
for(int i=1;i<a*b;i++){
if((i%a==0)&&(i%b==0)){
return i;
}
}
return a*b;
思路二:两个数a.b的最小公倍数是a*b/gcd(a,b).由于两个数的乘积等于两个数的最大公约数与最小公倍数的乘积,即(a,b)*[a,b]=a*b;所以,求两个数的最小公倍数,就可以先求出他们的最大公约数,然后求出他们的最小公倍数。
求最大公约数:
1.a/b,令r为所得余数(0<=r<b)若r==0,算法结束,a就是答案
2.互换,置a<——b,b<——r,并返回第一步。
import java.util.Scanner;
public class Main {
public static int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
private static int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
System.out.println(lcm(a, b));
}
}