我必须编写一个程序,从用户那里取一个数字,然后显示数字的素数因子。这是我到目前为止的程序:
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;
}
}
我无法弄清楚如何打印出数字列表。任何帮助表示赞赏。
答案 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;
}