【问题标题】:Javascript Finding Prime NumbersJavascript 查找素数
【发布时间】:2012-11-30 07:01:21
【问题描述】:

我正在编写一个小脚本来查找并打印出从 X 到 Y 的所有素数。这是我写的:

var numX = prompt('Enter a number greater than 0:','');
var numY = prompt('Enter a number greater than ' + numX + ':','');

while (numX <= numY) {
    if (numX == 1 || numX == 2 || numX == 3) {
    document.write(numX + '</br>');
    } else if (numX % 2 === 0 || numX % 3 === 0 || numX % 5 === 0 || numX % 7 === 0){
    document.write();
    } else {
    document.write(numX + '</br>');
    }
    numX++;
};

现在,只要第一个数字是 1,它就可以正常工作。但是,如果第一个数字大于 1,它不会打印任何内容。我不确定这是否是这个问题的正确论坛(也许是数学论坛?),但我想如果有人可以帮助我,我会在这里问。我也知道筛子是解决这个问题的更好方法,但我想先尝试将其作为一个 while 循环来解决。感谢您提供任何和所有帮助!

【问题讨论】:

  • 如果您的代码中的第一个数字等于 numX。您至少应该看到numX + '&lt;/br&gt;' 被写入if (numX == 1 || numX == 2 || numX == 3) ,因此如果第一个数字大于3,它将不会输出任何内容。低于 4 和高于 0,它会。我发现你的编码风格有点奇怪,因为if (numX == 1 || numX == 2 || numX == 3) 会更易读为if (numX &gt;= 1 &amp;&amp; numX &lt;= 3)
  • 甚至不接近,素数不是不能被 2、3、5 和 7 整除的数字。首先要正确计算公式。 wiki, wolfram
  • 我试过你的代码。当第一个数字大于 1 时,它仍然会打印:jsfiddle.net/YtA7q

标签: javascript


【解决方案1】:

虽然我了解您想要做什么,但我强烈建议您查看Sieve of Eratosthenes。如果您决定处理非常大的数字,您真的想掌握了解不同算法来计算这些东西的窍门。虽然你现在的做法可能在较小的范围内有效,但更大的范围会变得疯狂。

我也相信这个 Stackoverflow 问题与这个问题非常相似,并且它的答案非常好:

finding sum of prime numbers under 250

【讨论】:

    【解决方案2】:

    您可以在这里尝试任何选项:http://www.javascripter.net/faq/numberisprime.htm

    【讨论】:

      【解决方案3】:

      您好,我已经为您的代码添加了一些更改(添加了 5 和 7 素数的条件)及其工作......

      var numX = prompt('Enter a number greater than 0:','');
      var numY = prompt('Enter a number greater than ' + numX + ':','');
      
      while (numX <= numY) {
          if (numX == 1 || numX == 2 || numX == 3 || numX == 5 || numX == 7) {
          document.write(numX + '</br>');
          } else if (numX % 2 === 0 || numX % 3 === 0 || numX % 5 === 0 || numX % 7 === 0){
          document.write();
          } else {
          document.write(numX + '</br>');
          }
          numX++;
      };
      

      查看演示here

      【讨论】:

        【解决方案4】:

        好吧,事实证明我问这个问题是过激的。我更关心让 else if 语句起作用,我什至没有注意到我的公式存在严重缺陷!

        问题可能与第二个变量有关。如果第一个变量是 1,那么第二个变量可以是任意数字。但是,如果第一个变量大于 1,那么第二个变量必须小于 100,否则它将不起作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-01
          • 2017-05-23
          • 1970-01-01
          • 2015-10-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多