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

同样是写了一个需求的代码,自己写的好复杂
需求:题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
我自己写的[mw_shl_code=java,true]package test4;

import java.util.ArrayList;
import java.util.Scanner;

public class Test {
/*
* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。自己偷懒,就没写是质素就直接返回质素的情况
* */
        static int num = 0;
        public static void main(String[] args) {
                System.out.println("请输入一个整数:");
                num = new Scanner(System.in).nextInt();
                ArrayList<Integer> list = new ArrayList<Integer>();
                chuNum(list,num);
                System.out.println(list);
                StringBuffer s = new StringBuffer();
                for (int i = 0; i < list.size(); i++) {
                        if (i == list.size() - 1) {
                                s = s.append(list.get(i));
                                break;
                        }
                        s= s.append(list.get(i)+" * ");
                }
                System.out.println(num+" = "+s);
        }
        private static void chuNum(ArrayList<Integer> list, int num2) {
                for (int i = 2; i < num2/2+1; i++) {
                        if (num % i == 0) {
                                num = num / i;
                                list.add(i);       

                                chuNum(list, num);
                        }
                }
        }

}
[/mw_shl_code]------------简略版-----------------

[mw_shl_code=java,true]public class Demo{
        public static void main(String[] args){
                int n = 15;
                decompose(n);
        }
        private static void decompose(int n){
                System.out.print(n+"=");
                for(int i=2;i<n+1;i++){
                        while(n%i==0 && n!=i){
                                n/=i;
                                System.out.print(i+"*");
                        }
                        if(n==i){
                                System.out.println(i);
                                break;
                        }
                }
        }
}[/mw_shl_code]

4 个回复

倒序浏览
都是积累下的,相信有一天你也可以
回复 使用道具 举报
wqq1317 发表于 2017-1-11 23:42
都是积累下的,相信有一天你也可以

好的,谢谢
回复 使用道具 举报
区别好大,看着一串英文,我很怀疑去学的时候能不能学上{:8_525:}
回复 使用道具 举报
HXF 发表于 2017-1-12 17:38
区别好大,看着一串英文,我很怀疑去学的时候能不能学上

恩,是差距好大,人家用if  while就解决了, 我还用了StringBuffer ,ArrayList,这内存消耗相对就大了很多
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马