【问题标题】:print prime nos upto 100 in javascript在javascript中打印最多100个素数
【发布时间】:2017-07-15 20:23:33
【问题描述】:

<!DOCTYPE HTML>
<html>
<head>
  <script>
    var i, j, k = 1;
    for (i = 3; i < 100; i++) {
      for (j = 2; j < i; j++) {
        if (i % j == 0) {
          k = 0;
          break
        }
      }
    }
    if (k == 1) {
      alert(i);
    }
  </script>
</head>
<body>
</body>
</html>

我正在尝试在 js 中打印从 2 到 100 的素数。但是代码没有产生预期的结果。请帮助。提前致谢。

【问题讨论】:

  • 投反对票的原因是什么?
  • @KevinB 我不是那个意思
  • 我认为,如果您单步执行此代码,您将深入了解问题所在。这里有太多错误,无法通过一行更改来解决。用调试器检查一下,你很快就会发现哪里出了问题。
  • 代码有什么问题

标签: javascript


【解决方案1】:

首先,您只需要在 for 循环中检查直到 j &lt;= (i/2)
你的if(k==1) 也需要在外部for 循环内

    var i, j;
    for (i = 3; i < 100; i++) {
        var k = 1;
        for (j = 2; j <= i / 2; j++) {
            if (i % j == 0) {
                prime = false;
                k = 0;
                break;
            }
        }
        if (k == 1) {
            console.log(i);
        }
    }

【讨论】:

  • document.write 是邪恶的。请不要建议其他人使用它。它的用例非常有限。使用console.log() 进行测试。
  • @ScottMarcus 我只是想在屏幕上打印结果,以便在运行代码时可以轻松看到输出
  • console.log(...)document.write() 简单吗?我不这么认为。此外,由于 SO 是关于通知他人,为了简单起见,在答案中使用不良做法并没有真正帮助任何人。
  • @ScottMarcus 改成console.log()
猜你喜欢
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
相关资源
最近更新 更多