这里先开个坑,以后会把上课和做题过程中碰到的有关数论(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)
);