这段代码我做错了什么?它无法在控制台上打印任何内容。 这是问题的描述:
实现一个javascript函数,它接受一个包含整数N的数组,并使用一个表达式来检查给定的N是否为素数(即它是可整除的,只有自身的余数和1)。
return images["main"];
答案 0 :(得分:4)
您的代码中有几处错误。
首先,您需要检查2和Math.sqrt(n)之间的每个整数。您当前的代码在4中返回true。
我不认为这是一个函数,因此您需要从return
中省略return isPrime(n)
并将其替换为打印出函数返回值的函数,例如{ {1}}或alert
。
console.log
不是数字,而是数组。您需要输入数字,或使用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
,它的工作方式相同。
答案 1 :(得分:1)
n
是一个数组,您想要访问数组中的第一个元素并将其转换为数字。
尝试替换
return isPrime(n);
与
return isPrime(parseInt(n[0],10));
您的for循环条件也需要稍加修改
for(var i = 2; i <= Math.sqrt(n); i += 1) { //observe that i is not <= Math.sqrt(n)
答案 2 :(得分:0)
一些小错误:
var n = 2;//<--no need to put n in an array
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;
}
isPrime(n);//<--no need for "return"
答案 3 :(得分:0)
至于没有打印输出,这是因为您需要使用console.log
。
将return isPrime(n);
替换为console.log(isPrime(n));
。
答案 4 :(得分:0)
完整的工作代码:
var n = ['2', '3', '4', '5', '6', '7']; // you can use as many values as you want
function isPrime(n) {
if (n < 2) {
return false;
}
var isPrime = true;
for (var i = 2; i <= Math.sqrt(n); i += 1) { // Thanks to gurvinder372's comment
if (n % i === 0) {
isPrime = false;
}
}
return isPrime;
}
n.forEach(function(value) { // this is so you can iterate your array with js
console.log('is ' + value + ' prime or not? ' + isPrime(value)); // this so you can print a message in the console
});
/*
// Another approach of parsing the data, uncomment this piece of code and comment the one above to see it in action (both will give the same result)
for (index = 0; index < n.length; ++index) {
console.log('is ' + n[index] + ' prime or not? ' + isPrime(n[index])); // this so you can print a message in the console
}
*/