A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜写意 中级黑马   /  2015-7-18 11:05  /  348 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夜写意 于 2015-7-18 11:07 编辑

简单的方法求结果,没有做优化,只是分享思路。
  1. /*
  2. * 需求:输入两个正整数m和n,求其最大公约数和最小公倍数。   
  3. * 思路:1.定义一个方法,方法接收一个int类型的整数m,n
  4. *                         从2~n找出m和n都能整除的数
  5. *                         第一次找到后,重新调用此方法,传入m、n除以这个数的商
  6. *                         把这个数加到数组中并跳出此循环
  7. *                         返回此数组
  8. *                 2.调用定义的方法,传入m和n。所得的数组为他们的公约数,最大值为最大公约数
  9. *                 3.用m分别除以数组的每个元素,得的商再乘以n,得的值就是他们的最小公倍数。
  10. * */
  11. public class Test06 {
  12.         public static void main(String[] args) {
  13.                 new GetTest06(55,77);
  14.         }
  15. }

  16. class GetTest06 {
  17.         int[] arr = new int[20];
  18.         int x = 0;
  19.         int m, n;

  20.         public GetTest06(int m, int n) {
  21.                 super();
  22.                 this.m = m;
  23.                 this.n = n;
  24.                 getNum(m, n);
  25.                 getGongYueShu();
  26.                 getGongBerShu();
  27.                
  28.         }

  29.         public void getNum(int m, int n) {
  30.                 for (int i = 2; i < m; i++) {
  31.                         if (m % i == 0 && n % i == 0) {
  32.                                 getNum(m / i, n / i);
  33.                                 arr[x++] = i;
  34.                                 break;
  35.                         }
  36.                 }
  37.                 // return arr;
  38.         }

  39.         public void getGongYueShu() {
  40.                 Arrays.sort(arr);
  41.                 System.out.println("最大公约数:" + arr[arr.length-1]);

  42.         }

  43.         public void getGongBerShu() {
  44.                 for (int i : arr) {
  45.                         if (i != 0) {
  46.                                 m /= i;
  47.                         }
  48.                 }
  49.                 System.out.println("最小公倍数:" + m * n);
  50.         }

  51. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马