素数因子化

素数因子分解算法的示例实现。素数因子分解算法将为给定数字 n 找到一个素数列表,这样如果你乘以那些素数就得到 n。以下实现将 -1 添加到 n < 0 的素数因子列表中。请注意,0 不存在素数因子分解,因此下面的方法返回一个空列表。

List<Integer> primeFactors(int n) {
    List<Integer> factors = new ArrayList<>();
    if (n < 0) {
        factors.add(-1);
        n *= -1;
    }
    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 ;
}