输入两个正整数m和n,求其最大公约数和最小公倍数。
package cn.xuzihui;
public class Test {
/**
* @author xuzh
* 欧几里得算术(辗转相除法)
* 求两个数的最大公约数,每次用较大的数除较小数求余
* 余数不为0,则让较大数等于较小数,较小书等于余数,继续相除求余
* 当余数为0时,则这时的最小数为这两个数的最大公约数
*/
public static void main(String args[]) {
Test t = new Test();
System.out.println("输入的两个数的最大公约数为:"+t.gy(12, 18));
System.out.println("输入的两个数的最小公倍数为:"+t.gb(12, 18));
}
//求最大公约数的方法
public int gy(int a, int b) {
while(b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
/**
* 由于两个数的成绩等于它们的最大公约数×最小公倍数,即(a,b)×[a,b]=a*b,
* 因此求出最大公约数后,自然就得出它们的最小公倍数
*/
public int gb(int a, int b) {
int m = (a*b) / gy(a, b);
return m;
}
}
输出结果:
输入的两个数的最大公约数为:6
输入的两个数的最小公倍数为:36