用于检查数字是否为素数的Javascript函数在给定数字2时返回未定义
我有两个版本的JS函数来检查一个数是否为素数。当给定数字2时,这两种方法都可以工作,但场景除外。当给定数字2时,“Unworking function”返回undefined。谁能告诉我为什么?它适用于我给它的任何大于2的素数 工作职能:用于检查数字是否为素数的Javascript函数在给定数字2时返回未定义,javascript,algorithm,Javascript,Algorithm,我有两个版本的JS函数来检查一个数是否为素数。当给定数字2时,这两种方法都可以工作,但场景除外。当给定数字2时,“Unworking function”返回undefined。谁能告诉我为什么?它适用于我给它的任何大于2的素数 工作职能: function primeCheck(num) { for (var i = 2; i < num; i++) { if (num % i === 0) { return false; } } return nu
function primeCheck(num) {
for (var i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return num > 1;
}
function primeChecker(num) {
if (num <= 1) {
return false;
}
for (let i = 2; i < num; i++) {
if (num % i === 0) {
return false;
} else {
return true;
}
}
}
函数primeCheck(num){
对于(变量i=2;i1;
}
非工作功能:
function primeCheck(num) {
for (var i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return num > 1;
}
function primeChecker(num) {
if (num <= 1) {
return false;
}
for (let i = 2; i < num; i++) {
if (num % i === 0) {
return false;
} else {
return true;
}
}
}
函数primeChecker(num){
if(num是因为当num==2
时没有返回任何内容
if (num <= 1) {
return false;
}
也将被跳过,因为2<2
也是false
for (let i = 2; i < num; i++) {
您应该检查是否num===2
,并从一开始就返回true
if (num === 2) {
return true;
}
// the rest of your code.
将2传递给第一个函数时,不执行for循环,继续执行return语句。将2传递给第二个函数时,不会执行任何代码,因此函数返回“默认返回值”,它是未定义的。
。有关更多信息,请检查。您的非工作功能
不工作,因为当num=2时,此功能没有返回类型。另外,您的else
条件的逻辑不正确
当任何一个数不能被除1和这个数之外的其他数整除时,它被称为素数。所以当一个数没有整除子时,你可以说这个数就是素数
您的正确代码应该如下所示-
function primeChecker(num) {
if (num <= 1) {
return false;
}
for (let i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
函数primeChecker(num){
如果(num)因为never2<2
…这就解决了眼前的问题,但对于这里的答案,我希望讨论一个事实,即即使在解决了这个问题之后,第二个方法也不会做它应该做的事情。