Java 为什么我们在得到素数因子时不必检查这个数是否为素数?
这是查找主要因素的典型代码:Java 为什么我们在得到素数因子时不必检查这个数是否为素数?,java,math,primes,prime-factoring,Java,Math,Primes,Prime Factoring,这是查找主要因素的典型代码: public static List<Integer> primeFactors(int numbers) { int n = numbers; List<Integer> factors = new ArrayList<Integer>(); for (int i = 2; i <= n / i; i++) { while (n % i == 0) { factors.a
public static List<Integer> primeFactors(int numbers) {
int n = numbers;
List<Integer> factors = new ArrayList<Integer>();
for (int i = 2; i <= n / i; i++) {
while (n % i == 0) {
factors.add(i);
n /= i;
}
}
if (n > 1) {
factors.add(n);
}
return factors;
}
公共静态列表参数(整数){
int n=数字;
列表因子=新的ArrayList();
对于(int i=2;i 1){
因子。添加(n);
}
回报因素;
}
我的问题是,为什么不先检查一下我是否是素数,然后再将它添加到列表中呢?我们可以通过矛盾来证明这是不可能的
想象一下,某个复合编号被添加到列表中。列表中必须添加最小的复合编号。我们把它叫做c,想象一下它最小的素因子是p。我们知道p
我希望您理解逻辑,因为添加的任何数字都是素数,这是由for和while循环保证的。您能解释更多吗?