JavaScript中的Euler Project Euler最大因素错误



我是JavaScript的新手,并且努力挣扎以了解为什么这不起作用。

function largestPrimeFactor(num) {
  var primeFactors = [];
  for (var i = 2; i < num; i++) {
    // check if iter i is prime
    if (checkIfPrime(i)) {
      // if so, see if its a factor of num
      while (num % i === 0) {
        num /= i;
        primeFactors.push(i);
        console.log(primeFactors);
        console.log(num);
      }
    }
    if (num === 1) {
      // return Math.max.apply(Math, primeFactors) 
      console.log(primeFactors);
      console.log(Math.max.apply(Math, primeFactors));
    }
  }
}
function checkIfPrime(num) {
  for (var i = 2; i < num; i++) {
    if (num % i === 0) {
      return false;
    }
  }
  return true;
}
console.log(largestPrimeFactor(13195));

最终的控制台。log永远不会在最后一个质数29中脱颖而出。我也从未输入最后一个 if(num === 1)案例,我也不知道为什么...

当我最多迭代29时,checkIfPrime(i)应为true,然后在29 / 29设置num为1之后,最后一个if情况也应起作用。

为什么这不起作用?

第二Q-是

return Math.max.apply(Math, primeFactors)

从整数数组返回最大值的正确方法?

谢谢!

for(var i = 2; i < num; i++) { // line 3

因此,如果num为29,i只能转到28。应将<更改为<=

最新更新