用于检查数字是否为素数的Javascript函数在给定数字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

我有两个版本的JS函数来检查一个数是否为素数。当给定数字2时,这两种方法都可以工作,但场景除外。当给定数字2时,“Unworking function”返回undefined。谁能告诉我为什么?它适用于我给它的任何大于2的素数

工作职能:

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)因为never
2<2
…这就解决了眼前的问题,但对于这里的答案,我希望讨论一个事实,即即使在解决了这个问题之后,第二个方法也不会做它应该做的事情。