【问题标题】:JavaScript Loops With If and Else带有 if 和 else 的 JavaScript 循环
【发布时间】:2020-04-29 21:32:43
【问题描述】:

为什么以下不能准确记录一个数字是否为素数?

function isPrime2(num) {    
for(let i = 2; i < num; i++) {
if(num % i === 0) {
return console.log(false); break;
} else{return console.log(true)}
}
}

isPrime2(33) 返回真,即使它是一个素数。

如果 i = 2,则控制台将记录 true,因为 33/2 = 16.5 但是由于循环没有结束,下一个 i 的值是 i=3, 那么控制台不应该记录为假,然后完全跳出循环,让最终答案为假吗?

【问题讨论】:

  • 33 不是质数。
  • return console.log(false) 不是返回false 的方式。你应该:console.log(false); return false;。无需break,因为return false 将具有相同的效果。与return console.log(true) 相同。试试console.log(true); return true;

标签: javascript function loops if-statement


【解决方案1】:

这里有两个问题。

你的逻辑坏了

function isPrime2(num) {
  for (let i = 2; i < num; i++) {
    const remainder = num % i;
    console.log({
      remainder
    });
    if (remainder === 0) {
      return console.log(false);
      break;
    } else {
      return console.log(true)
    }
  }
}

isPrime2(33);

i2 开头。

if(num % i === 0) 是假的,所以我们去else

else{return console.log(true)} 导致它记录true 并退出函数。


first 测试失败时触发您的失败条件,而不是等待循环以 任何 测试的成功条件结束。


33 不是素数

它可以被311 整除。

function isPrime2(num) {
  for (let i = 2; i < num; i++) {
    const remainder = num % i;
    console.log({
      remainder
    });
    if (remainder === 0) {
      return console.log(false);
      break;
    }
  }
  return console.log(true)
}

isPrime2(33);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 2023-03-18
    • 2018-07-08
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多