【专业课学习】数论相关算法问题

74 阅读1分钟

这里先开个坑,以后会把上课和做题过程中碰到的有关数论(Number Theory)的算法问题都放在这里。

正整数的质因子分解

function PrimeFactorization(n) {
    let i = 2;  // 从最小的质数开始尝试对n进行分解
    let factors = [];  // 储存分解出来的质因子及其幂次
    while (i * i <= n) {
        let count = 0;
        while (n % i === 0) {
            count++;
            n = n / i;
        }
        if (count > 0) {
            factors.push([i, count]);
        }
        i++;
    }
    // 最后可能还剩下无法被分解的质数
    if (n > 1) {
        factors.push([n, 1]);
    }
    return factors;
}

console.log(
    PrimeFactorization(10), 
    PrimeFactorization(200), 
    PrimeFactorization(6),
    PrimeFactorization(7)
);