当前位置: 代码迷 >> J2SE >> 作业,该怎么解决
  详细解决方案

作业,该怎么解决

热度:391   发布时间:2016-04-24 02:21:17.0
作业
Java code
public class Program4 {    static StringBuffer str = new StringBuffer();        public static void main(String[] args) {        System.out.print(test(90));    }        public static String test(int n) {        str = str.append(n+ " = 1");        if(n <= 3) {            System.out.print("请输入一个大于3的正整数!");            System.exit(1);            }                    for(int i = 2; i <= n; i++) {            if(n%i == 0) {                str = str.append("*" +i);                n = n/i;                return test1(n);            }        }        return " errer";    }    public static String test1(int n) {        for(int i = 2; i <= n; i++) {            if(n%i == 0) {                str = str.append("*" +i);                n = n/i;                if(n == 1) {                    return str.toString();                }                return test1(n);            }        }        return "err";    }    }

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
如上,刚做的一个练习,求有没有方便点简洁点的办法。

------解决方案--------------------
Java code
public class Program4 {    static StringBuffer str = new StringBuffer();    private static boolean first = true;    public static void main(String[] args) {        System.out.print(test(90));    }    public static String test(int n) {        if (first) {            str = str.append(n + " = 1 ");            if (n <= 3) {                System.out.print("请输入一个大于3的正整数!");                System.exit(1);            }        }        first = false;        if (n == 1)            return str.toString();        for (int i = 2; i <= n; i++) {            if (n % i == 0) {                str = str.append("* " + i);                n = n / i;                return test(n);            }        }        return " errer";    }}
------解决方案--------------------
Java code
public class Program4 {    static StringBuffer str = new StringBuffer();        public static void main(String[] args) {        System.out.print(test2(200));    }        public static String test(int n) {        str = str.append(n+ " = 1");        if(n <= 3) {            System.out.print("请输入一个大于3的正整数!");            System.exit(1);            }                    for(int i = 2; i <= n; i++) {            if(n%i == 0) {                str = str.append("*" +i);                n = n/i;                return test1(n);            }        }        return " errer";    }    public static String test1(int n) {        for(int i = 2; i <= n; i++) {            if(n%i == 0) {                str = str.append("*" +i);                n = n/i;                if(n == 1) {                    return str.toString();                }                return test1(n);            }        }        return "err";    }        //下面的test2不用递归:    //    public static String test2(int n){        if(n<=3){            System.out.print("请输入一个大于3的正整数!");            System.exit(1);         }        str.append(n+" = 1");        int x=n;        int i=2;        while(x!=1){            if(x%i==0){                str.append("*"+i);                x/=i;            }else{                i++;            }        }        return str.toString();    }    }
  相关解决方案