题目描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
输入描述:
输入两个正整数A和B。
输出描述:
输出A和B的最小公倍数。
示例1
输入
5 7
输出
35
求最大公约数:更相减损法、辗转相除法
求最小公倍数:(a*b)/最大公约数
更相减损法是拿两个数中的较大值减去较小值,然后在减数、被减数、差之间选取两个较小值继续相减,直到减数和被减数相等,得出的数就是最大公约数。
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
while(scanner.hasNextInt())
{
int a=scanner.nextInt();
int b=scanner.nextInt();
int max=a;
int min=b;
if(a<b)
{
min=a;
max=b;
}
while(min!=max)
{
int c=max-min;
if(c>min)
{
max=c;
}
else
{
max=min;
min=c;
}
}
System.out.println((a*b)/max);
}
scanner.close();
}
}
辗转相除法是拿两个数中的较大值除以较小值,然后在除数、被除数、余数之间选取两个较小值继续相除,直到可以整除或其中一数为1,得到的最小数就是最大公约数。
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
while(scanner.hasNextInt())
{
int a=scanner.nextInt();
int b=scanner.nextInt();
int max=a;
int min=b;
if(a<b)
{
min=a;
max=b;
}
while(max%min!=0&&min!=1)
{
int c=max%min;
if(c>min)
{
max=c;
}
else
{
max=min;
min=c;
}
}
System.out.println((a*b)/min);
}
scanner.close();
}
}