为什么这个主要检查工作?

时间:2017-09-27 15:17:55

标签: javascript html5

以下代码正确确定数字是否为素数:

var num = parseInt(prompt("Number:"));
var ans = "prime";

for (var i = 2; i < num; i++) {
  if (num % i === 0) {
    ans = "not prime";
    break;
  }
}
alert(ans);

为什么此代码适用于输入“2”?

我认为2的输入会给出“不是素数”,因为2%2 === 0就是真的。

2 个答案:

答案 0 :(得分:8)

  

我认为2的输入会给出“不是素数”,因为2%2 === 0就是真的。

2 % 2永远不会发生。

检查可分割数字的循环是:

for (var i = 2; i < num;...

i2开始,num是用户输入。

如果num 2,那么i < num的第一次测试是2 < 2,这是假的。循环永远不会执行,ans仍然是“素数”。

答案 1 :(得分:1)

魔法似乎处于循环状态:

for (var i = 2; i < num; i++)

如果输入2,则不满足条件i<num,因此不执行正文。

但是。如果您使用1作为您的值,它也将返回'prime'。或者,如果输入0或负值。如果给定的数字是否为素数,则可能更好,不仅仅是通过检查某组数字 - 或者至少进行一些输入验证。

当然,如果主要练习只是用循环练习,他的代码就可以了。

HTH jesterchen