黑马程序员技术交流社区
标题:
求最大公约数和最小公倍数
[打印本页]
作者:
夜写意
时间:
2015-7-18 11:05
标题:
求最大公约数和最小公倍数
本帖最后由 夜写意 于 2015-7-18 11:07 编辑
简单的方法求结果,没有做优化,只是分享思路。
/*
* 需求:输入两个正整数m和n,求其最大公约数和最小公倍数。
* 思路:1.定义一个方法,方法接收一个int类型的整数m,n
* 从2~n找出m和n都能整除的数
* 第一次找到后,重新调用此方法,传入m、n除以这个数的商
* 把这个数加到数组中并跳出此循环
* 返回此数组
* 2.调用定义的方法,传入m和n。所得的数组为他们的公约数,最大值为最大公约数
* 3.用m分别除以数组的每个元素,得的商再乘以n,得的值就是他们的最小公倍数。
* */
public class Test06 {
public static void main(String[] args) {
new GetTest06(55,77);
}
}
class GetTest06 {
int[] arr = new int[20];
int x = 0;
int m, n;
public GetTest06(int m, int n) {
super();
this.m = m;
this.n = n;
getNum(m, n);
getGongYueShu();
getGongBerShu();
}
public void getNum(int m, int n) {
for (int i = 2; i < m; i++) {
if (m % i == 0 && n % i == 0) {
getNum(m / i, n / i);
arr[x++] = i;
break;
}
}
// return arr;
}
public void getGongYueShu() {
Arrays.sort(arr);
System.out.println("最大公约数:" + arr[arr.length-1]);
}
public void getGongBerShu() {
for (int i : arr) {
if (i != 0) {
m /= i;
}
}
System.out.println("最小公倍数:" + m * n);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2