我在js中做了一个简单的函数,取一个参数n,然后将其分解为质数。然而,当n是质数的重复乘积时,它并没有将重复的部分加到因数数组中。例如数字28。28等于2*2*7=2^2*7.如果我在n=28的情况下运行我的函数factor(n),我想得到以下结果。[2,2,7]. 相反,我得到[2,7]。谁能帮我解决这个问题?这是js中的函数。
function factor(n) {
var factors = []
for (var i = 2; i < n; i++) {
if (divisible(n,i)) {
if (isPrime(i)) {
factors.push(i)
}
factor(i)
}
}
console.log(factors)
}
谢谢!
const primeFactors = N => {
const smallestFactor = n => {
if (n % 2 === 0) return 2;
for (let k = 3; k * k <= n; k+= 2) if (n % k === 0) return k;
return n;
}
let factors = [];
let val = N;
while (val !== 1) {
let factor = smallestFactor(val);
factors.push(factor);
val /= factor;
}
return factors;
}
console.log(primeFactors(28));