为什么prime-factorization-function不能正常工作?

问题描述 投票:-1回答:1

我在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)
 }

谢谢!

javascript arrays function math prime-factoring
1个回答
1
投票

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));
© www.soinside.com 2019 - 2024. All rights reserved.