首页 > 解决方案 > 在下面的代码中,为什么 j 应该小于 i,为什么 j<=n 不起作用(第 4 行)?

问题描述

我无法理解第 4 行。为什么在我写 j<=n 时它不起作用。

let n = 10;

nextPrime:
  for (let i = 2; i <= n; i++) { // for each i...

    for (let j = 2; j < i; j++) { // look for a divisor..
      if (i % j == 0) continue nextPrime; // not a prime, go next i
    }

    alert(i); // a prime
  }

标签: javascriptloops

解决方案


素数是只能被一个和它们自己整除的数字。

此代码有效:

for (let j = 2; j < i; j++) { // here you have to iterate only t
    if (i % j == 0) continue nextPrime; // not a prime, go next i
}

因为对于每个i你需要知道是否有一个较小的数字i可以被它整除。

例如:

i === 6;

要知道它是否是质数,您不必测试 1 和 6,而是测试所有其他数字:2、3、4 和 5。由于 6 可以被 2 整除,因此您已经知道它不是质数并且可以转到下一个号码。

这就是为什么你使用j<i而不是j<=n.


推荐阅读