javascript - checkPrime 函数返回不正确的值

标签 javascript

numbers = [];
for (x = 1; x <= 1e4; x++) {
  numbers.push(x)
}
//console.log(numbers)

function checkPrime(num) {
  if (num == 1 || num == 0) {
    return 'It is a separate case'
  }
  if (num == 2) {
    return num + ' is prime'
  }
  for (var i = 2; i < num; i++) {
    if (num in numbers) {
      if (num % i === 0) return num + ' is not prime';
      else {
        return num + ' is prime';
      }
      return num !== 1;
    } else {
      return num + ' is not in range';
    }
  }

}
console.log(checkPrime(27));

嗨。 在上面的代码中,我试图创建一个函数来返回有关数字是否为素数的信息。

然而,它在某些情况下会失败。像例如。在 27 或 145 的情况下,它返回值是质数,这显然是错误的。我怎样才能修改这个程序以使其工作?

此外,合并数字 2 和其余素数的情况的最聪明方法是什么?

提前致谢,抱歉,如果这太基础了,我在其他地方找不到正确的答案。

最佳答案

在完成检查所有数字直到它本身为 -1 之前,您要放置声明该数字为质数的“else”子句。

为了达到最佳效果,您不需要循环直到数字 ( < num)。直到数字的平方根。 (甚至比循环到 num/2 更好)例如:当循环达到 13 时,可以看出 167 是质数。13*13 = 169 > 167 因此您可以停止并安全地确认 167 是质数。

对于数字 2,有一个单独的案例是正确的。

下面是检查单个值是否为质数的代码:

function checkPrime(num) {
  if (num == 1 || num === 0) {
    return 'It is a separate case'
  }
  if (num == 2) {
    return num + ' is prime'
  }
  for (var i = 2; i < Math.sqrt(num); i++) {
      if (num % i === 0) return num + ' is not prime';
  }
  return num + ' is prime';
}
alert(checkPrime(27));

关于javascript - checkPrime 函数返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50470657/

相关文章:

javascript - 模态中的模态或模态 Angular js 1 和 html 中的 div 到 "hide and show"

javascript - 将页面的整个 html 内容向下移动?

javascript - 检查函数中的浏览器类型在 Javascript 中不起作用

java - 如何实现离线 GOT map

javascript - Vanilla JavaScript 中的下拉菜单 - 用于未知数量的按钮

javascript - 检测是否从浏览器安装了 Adob​​e Acrobat Reader 的最佳方法是什么?

javascript - 计算形式,逗号后面

javascript - 如何在页面完全加载之前将 jQuery 效果应用于元素?

javascript - 如何设置 webpack 以支持 Node 中的 ES6 模块

javascript - 通过多个对象对多个数组求和