本帖最后由 夜写意 于 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);
- }
- }
复制代码 |
|