【问题标题】:How to check if a number is prime? and if is not, how to increment the number until the function returns the next prime number?如何判断一个数是否为素数?如果不是,如何增加数字直到函数返回下一个素数?
【发布时间】:2021-08-05 18:32:44
【问题描述】:

事情是我相信我已经构建了实现它的代码,问题是我试图用它作为jschallenger.com挑战的答案,但页面不接受我的代码作为有效答案。

谁能向我解释为什么该网站不接受我的代码以及如何修复它?我的代码是对的,对吧?

这是我的代码:

function checkPrime(number) {
  for (var i = 2; i < number; i++) {
    if (number % i === 0) {
      return false;
    }
  }
  return true;
}

function myFunction(number) {
  if (checkPrime(number)) {
    return number;
  } else {
    while (checkPrime(number) === false) {
      number++;
    }
  }
  return number;
}

console.log(myFunction(38)); //the return should be 41
console.log(myFunction(7)); //the return should be 7
console.log(myFunction(115)); //the return should be 127
console.log(myFunction(2000)); //the return should be 2003

【问题讨论】:

  • 您能否详细说明“该网站不接受我的代码”是什么意思?当您的代码在此处运行时,它会返回您期望的值。
  • 他们不希望你创建另一个全局函数。如果您将function checkPrime(number) { ...} 移动到myFunction 内部,它将起作用
  • 详细说明“该网站不接受我的代码”:如果您尝试在 jschallenger.com 上运行我的代码,则该代码将无法通过验证。该代码不是有效答案。

标签: javascript primes


【解决方案1】:

看起来该网站只允许您拥有该功能而没有其他功能。特别是在这种情况下:没有单独的功能。因此,如果我将您的 checkPrime 函数放入 myFunction 中,它将成功通过。

function myFunction(number) {
  function checkPrime(number) {
    for (var i = 2; i < number; i++) {
      if (number % i === 0) {
        return false;
      }
    }
    return true;
  }
  if (checkPrime(number)) {
    return number;
  } else {
    while (checkPrime(number) === false) {
      number++;
    }
  }
  return number;
}

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 2023-02-02
    • 2015-02-08
    • 2011-05-24
    • 2020-02-14
    • 2010-12-05
    • 2023-03-12
    相关资源
    最近更新 更多