使用循环的Java中的Prime分解程序

时间:2015-11-30 20:51:01

标签: java loops for-loop methods while-loop

我必须编写一个程序,从用户那里取一个数字,然后显示数字的素数因子。这是我到目前为止的程序:

public static void main(String[] args) {
        int a = getInt("Give a number: ");
        int i = 0;

        System.out.println("Your prime factors are: " + primeFactorization(a, i));

    }

    public static int getInt(String prompt) {
        int input;

        System.out.print(prompt);
        input = console.nextInt();

        return input;
    }

    public static int primeFactorization(int a, int i) {
        for (i = 2; i <= a ; i++) {
            while (a % i == 0) {
                a /= i;
            }
        }
        return i;
    }

}

我无法弄清楚如何打印出数字列表。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

你应该返回一个List<Integer>而不是一个int,并且i中没有任何一个参数。正确的方法是

public static List<Integer> primeFactorization(int a) {
    List<Integer> list = new ArrayList<Integer>();
    for (int i = 2; i <= a ; i++) {
        while (a % i == 0) {
            list.add(i);
            a /= i;
        }
    }
    return list;
}

答案 1 :(得分:1)

虽然在大多数情况下@Paul Boddington的回答更好(例如,如果你之后使用这些值),对于像你这样的简单程序,你可以将所有因子添加到字符串中并返回字符串。例如:

public static String primeFactorization(int a) {
    String factors = "";
    for (int i = 2; i <= a ; i++) {
        while (a % i == 0) {
            factors += i + " ";
            a /= i;
        }
    }
    return factors;
}