import java.util.Scanner;
/**
* 问题:
* 输入两个正整数m和n,求其最大公约数和最小公倍数。
*
* @author Administrator
*
* 程序如下:
*
* 最大公约数为greatest common divisor,简写为gcd
* 最大公倍数为Least Common Multiple,简写为lcm
*
* 分析如下:
* 求最大公约数用欧几里德算法:即若整数c是整数a和整数b的公约数,那么c也是b和a与b相除的余数的公约数(a>b,并且b不等于0)
* 求最小公倍数的方法是根据:整数a和整数b的最小公倍数等于a与b的积除以a和b的最大公约数所得的值。
*
*/
public class GCD_and_LCM {
public static void main(String args[]){
System.out.println("请输入两个整数,按Enter键结束!");
Scanner s=new Scanner(System.in);
int a=s.nextInt();
int b=s.nextInt();
GCD_and_LCM gl=new GCD_and_LCM();
System.out.println(a+"和"+b+"的最大公约数和最小公倍数分别为:");
System.out.println(gl.gcd(a,b));
System.out.println(gl.lcm(a, b));
}
public int gcd(int a,int b){
if(b==0){
return a;
}
else{
while(b!=0){
int r=a%b;
a=b;
b=r;
}
return gcd(a,b);
}
}
public int lcm(int a,int b){
return a*b/gcd(a,b);
}
}
运行结果如下:
run:
请输入两个整数,按Enter键结束!
12 30
12和30的最大公约数和最小公倍数分别为:
6
60
成功生成(总时间:9 秒)