package com.jake.primefactor;
import java.util.ArrayList;
import java.util.List;
public class PrimeFactor {
public static List<Integer> calc(int number) {
List<Integer> factors = new ArrayList<>();
while (number > 1) {
for (int factor = 2; factor <= number; factor++) {
if (number % factor == 0 && number > factor) {
factors.add(factor);
number = number / factor;
break;
}
}
}
return factors;
}
}
方法二:内层while循环
package com.jake.primefactor;
import java.util.ArrayList;
import java.util.List;
public class PrimeFactor {
public static List<Integer> calc(int number) {
List<Integer> factors = new ArrayList<>();
if (number >= 2) {
for (int factor = 2; factor < number; factor++) {
while (number % factor == 0 && number > factor) {
factors.add(factor);
number = number / factor;
}
}
factors.add(number);
}
return factors;
}
}
测试:
import com.jake.primefactor.PrimeFactor;
public class Main {
public static void main(String[] args) {
for (int i = 0; i <= 100; i++) {
System.out.println(i + ": " + PrimeFactor.calc(i));
}
}
}