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 秒)