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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

简单的方法,没有加入复杂的算法,程序的效率不高。
  1. /*
  2. * 需求: 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  3. * 思路:1.定义一个方法,方法的作用是为一个数从1开始到其本身之间求模
  4. *                         模为0的则这个数是其质因数,将这个数加入集合。
  5. *                 2.当模为0时,使用递归的思想继续调用此方法,传入商的值。
  6. *                 3.当只能被其本身整除时,结束此递归循环,得的数为其质因数。
  7. */
  8. public class Test04 {

  9.         public static void main(String[] args) {
  10.                 new GetZhiYinShu(555555);
  11.         }
  12. }

  13. class GetZhiYinShu {
  14.         private int number;
  15.         private ArrayList<Integer> al = new ArrayList<Integer>();

  16.         public GetZhiYinShu(int number) {
  17.                 super();
  18.                 this.number = number;
  19.                 getNumber(number);
  20.                 show();
  21.         }

  22.         public ArrayList<Integer> getAl() {
  23.                 return al;
  24.         }


  25.         public void getNumber(int number) {
  26.                 for (int i = 2; i <= number; i++) {
  27.                         if (number % i == 0) {
  28.                                 getNumber(number / i);
  29.                                 al.add(i);
  30.                                 break;
  31.                         }
  32.                 }
  33.         }

  34.         public void show() {
  35.                 StringBuffer sb = new StringBuffer();
  36.                 for (int i = al.size() - 1; i >= 0; i--) {
  37.                         if (i != 0)
  38.                                 sb.append(al.get(i) + "*");
  39.                         else
  40.                                 sb.append(al.get(i));
  41.                 }
  42.                 System.out.println(number + "=" + new String(sb));
  43.         }
  44. }
复制代码

0 个回复

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