我用这段代码做错了什么?它无法在控制台上打印任何内容。
这是问题的描述:
实现一个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)
,并用一个函数替换它,从而打印出函数的返回值,例如alert
或console.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++
,其工作方式相同。