【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
package com.share.test01_10;
/**
* 【程序6】题目:<br>
* 输入两个正整数m和n,求其最大公约数和最小公倍数。
*
* @author brx
*/
public class Test06 {
public static void main(String[] args) {
test(148, 20);
}
/**
* 思路:<br>
* 先比较两个数的大小,用小的数找最大公约数,用大的数找最小公倍数<br>
* 思路1:找最小公倍数通过递增判断去找<br>
* 思路2: 找最小公倍数通过最大公约数去找
*
* @param max
* 两个数中的大的数
* @param min
* 两个数中的小的数
* @param lcm
* 最小公倍数(Least Common Multiple)
* @param gcd
* 最大公约数(Greatest Common Divisor)
*/
public static void test(int m, int n) {
int max = 0;
int min = 0;
max = m > n ? m : n;
min = m < n ? m : n;
int gcd = min;
for (int i = min; i > 1; i--) {
if (max % i == 0 && min % i == 0) {
System.out.println("最大公约数:" + i);
gcd = i;
break;
}
}
int lcm = max;
while (true) {
if (lcm % max == 0 && lcm % min == 0) {
System.out.println("最小公倍数:" + lcm);
break;
}
lcm++;
}
lcm = max * min / gcd;
System.out.println("最大公倍数:" + lcm);
}
}
网友评论