java求输入两个数的最大公约数和最小公倍数

时间:2021-11-13 21:09:45

//求输入两个数的最大公约数和最小公倍数
import java.util.*;
public class Testshu
{
 public static void main(String [] args)
 {
  //定义两个整型数
  int min;
  int max;
  //调用java.util.Scanner可以获得从键盘输入的数字;
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入一个数:");
  //nextInt()方法用来获取int数
  min = sc.nextInt();
  System.out.println("请再输入一个数:");
  //nextInt()方法用来获取int数
  max = sc.nextInt();
  //调用后面的静态方法最大公约数Gcd(),最小公倍数Lcm()
  //判断两个数的大小,min比max小不用换,min比max大则互换位置
  if(max<min)
  {
   int temp = min;
   min = max;
   max = temp;
  }
  System.out.println("最大公约数为:"+Gcd(min,max));
  System.out.println("最小公倍数为:"+Lcm(min,max));
 }

//求最大公约数
 public static int Gcd(int min, int max)
 {
  //利用递归,大的数除小的数,若余数不为0,则让较小得数(min)做被除数,余数(k)做除数,直到k=0,此时min为最大公约数
  //运用递归调用将求余之后的值作为min    * 将之前的min作为max直到求余值为0为止结束循环
  while(max%min != 0)
  {
   int k = max%min;
   max = min;
   min = k;
  }
  return min;
 }

 //求最小公倍数
 public static int Lcm(int min ,int max)
 {
  //最小公倍数就是两个数相乘再除以最大公约数
  return min*max/Gcd(min,max);
 }
}