【发布时间】:2015-06-17 18:22:44
【问题描述】:
我正在尝试使用 java 获取给定数字的素数。我能够编写以下代码。它返回 2,5,10 的素数为 100,而 10 不是素数,它也是返回 2,4,11 为 88 的素数,而 4 不是素数。谁能解释一下是什么原因以及如何解决?
import java.util.ArrayList;
import java.util.Random;
public class PrimeFactors {
public static void main(String[] args) {
Random randomGenarator = new Random();
int number = randomGenarator.nextInt(150);
System.out.println("Prime factors of :" + number);
findPrimeFactors(number);
}
private static void findPrimeFactors(int i) {
ArrayList<Integer> list = new ArrayList<Integer>();
for (int n = 2; n <= i; n++) {
if (i % n == 0) {
list.add(n);
i /= n;
}
}
for (int n : list) {
System.out.println(n);
}
}
}
【问题讨论】: