Java经典案例之-“最大公约数和最小公倍数”

时间:2022-11-16 17:55:08

/**

* 描述:输入两个正整数m和n,求其最大公约数和最小公倍数.(最大公约数:最大公约数,

* 也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。)

* (最小公倍数:几个数共有的倍数叫做这几个数的公倍数,其中除0以外最小的一个公倍数,

* 叫做这几个数的最小公倍数。)

* 分析:可以利用辗转相除法求两个数的最大公约数与最小公倍数。(辗转相除法:两个整数的

* 最大公约数等于其中较小的数和两数的相除余数的最大公约数。例如,252和105的最大公

* 约数是21(252 = 21 × 12;105 = 21 × 5);因为252 / 105 = 2余42,

* 所以105和42的最大公约数也是21。)

* 作者:徐守威

*/

package com.xushouwei;

import java.util.*;

public class T6 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner sc=new Scanner(System.in);

System.out.println("请输入第一个正整数:");

int num1=sc.nextInt();

System.out.println("请输入第二个正整数:");

int num2=sc.nextInt();

System.out.println("最大公约数为:"+divisor(num1,num2)+",最小公倍数为:"+multiple(num1,num2));

}

//定义一个求最大公约数的额方法

public static int divisor(int num1, int num2) {

int temp;

while (num1 != 0)

{

temp = num1;

num1 = num2 % num1;

num2 = temp;

}

return num2;

}

//定义一个求最小公倍数的方法

public static int multiple(int num1, int num2)

{

return (num1*num2)/divisor(num1,num2);

}

}