我用这段代码做错了什么?它无法在控制台上打印任何内容。
这是问题的描述:

实现一个javascript函数,该函数接受包含整数N的数组,并使用表达式检查给定的N是否为素数(即,可以将其整除而仅对自身和1取余)。

var n = ['2'];

function isPrime(n) {

    if (n < 2) {
      return false;
    }

    var isPrime = true;

    for(var i = 2; i < Math.sqrt(n); i += 1) {
      if (n % i === 0) {
        isPrime = false;
      }
    }

    return isPrime;
}

return isPrime(n);

最佳答案

您的代码中有几个错误。

首先,您需要检查2和Math.sqrt(n)之间的所有整数。您当前的代码为4返回true。

我认为这不在函数中,因此您需要从return中省略return isPrime(n),并用一个函数替换它,从而打印出函数的返回值,例如alertconsole.log
n不是数字,它是一个数组。您需要将n设为数字,或使用isPrime(n[0])调用该函数。

正确的代码是

var n = 2;

function isPrime(n) {

    if (n < 2) {
      return false;
    }

    var isPrime = true;

    for(var i = 2; i <= Math.sqrt(n); i += 1) {
      if (n % i === 0) {
        isPrime = false;
      }
    }

    return isPrime;
}

alert(isPrime(n));

注意:您可以将n += 1更改为n++,其工作方式相同。

10-06 05:26