素數因子化

素數因子分解演算法的示例實現。素數因子分解演算法將為給定數字 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 ;
}