黑马程序员技术交流社区

标题: 求一个数的质因数 [打印本页]

作者: 执剑人    时间: 2016-3-8 08:38
标题: 求一个数的质因数
public static void getn(int b){
                int i;
                ArrayList<Integer> list = new ArrayList<Integer>();
                for(i = 2 ; i <= b; i ++){
                        if(( b % i ) == 0 && b != i){
                                list.add(i);
                                getn(b / i);
                                break;
                        }else if(b == i){
                                list.add(b);
                        }
                }
               
                for (Integer in : list) {
                        System.out.println(in);
                       
                }
代码如上,能就是打印的时候我想能打印成这样的,例如
90=2*3*3*5
哪位大神重写一下打印的代码?


作者: 超人d咖啡也加糖    时间: 2016-3-8 15:03
public static void test(int b) {
作者: 超人d咖啡也加糖    时间: 2016-3-8 15:05
没有用List,楼主这样用List,每次都是存进去一个数字就输出(递归的时候局部变量会消失的吧),那用List没有意义啊。。。。
public static void test(int b) {
                System.out.print(90 + "=");
                getn(b);
        }

        public static void getn(int b) {
                int i;
                for (i = 2; i <= b; i++) {
                        if ((b % i) == 0 && b != i) {
                                System.out.print(i + "*");
                                getn(b / i);
                                break;
                        } else if (b == i) {
                                System.out.print(i);
                        }
                }

        }
作者: 超人d咖啡也加糖    时间: 2016-3-8 15:06
超人d咖啡也加糖 发表于 2016-3-8 15:05
没有用List,楼主这样用List,每次都是存进去一个数字就输出(递归的时候局部变量会消失的吧),那用List没 ...

代码第二行的90改成b。。。。。。
作者: 超人d咖啡也加糖    时间: 2016-3-8 15:21
这种是用List的,我输出接口不会,所以用的for循环。。。。。楼主参考一下
public static void test(int b) {
                ArrayList<Integer> list = new ArrayList<Integer>();
                getn(b, list);
                for (int i = 0; i < list.size(); i++) {
                        if (i == 0) {
                                System.out.print(b + "=" + list.get(i));
                        } else {
                                System.out.print("*" + list.get(i));
                        }
                }
        }
        public static void getn(int b, ArrayList<Integer> list) {
                for (int i = 2; i <= b; i++) {
                        if ((b % i) == 0 && b != i) {
                                list.add(i);
                                getn(b / i, list);
                                break;
                        } else if (b == i) {
                                list.add(b);
                        }
                }

        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2