Number(i) 被传递到代码中的函数 below.can 有人解释了循环在代码中是如何工作的

Number(i) is passed into the function in the code below.can someone explain how the loops are working in the code

代码:

let para = document.createElement('p');

function isPrime(num) {
  for (let z = 2; z < num; z++) {
    if (num % z === 0) {
      return false;
    }
  }

  return true;
}

for (i; i > 1; i--) {
  if (isPrime(i)) {
    para.textContent += `${i} `;
  }
}

let section = document.querySelector('section');
section.appendChild(para);
<section></section>

输出:

499 491 487 479 467 463 461 457 449 443 439 433 431 421 419 409 401 397 389 383 379 373 367 359 353 349 347 337 331 317 313 311 307 293 283 281 277 271 269 263 257 251 241 239 233 229 227 223 211 199 197 193 191 181 179 173 167 163 157 151 149 139 137 131 127 113 109 107 103 101 97 89 83 79 73 71 67 61 59 53 47 43 41 37 31 29 23 19 17 13 11 7 5 3 2

根据您的评论我可以看出,您实际上是在问:“代码如何检查数字是否为素数”。 那么,首先,我们应该说,什么是“素数”。

Every natural number has both 1 and itself as a divisor. If it has any other divisor, it cannot be prime. ~Wikipedia

所以,如果数字 num1num 之间有任何约数,则isPrime() 函数应该 return false.

所以,这就是为什么您的代码要查找 1num:

之间的每个整数
for (let z = 2; z < num; z++)

但是如何检查数字z是否是数字num的约数? 要检查它,您必须计算除法余数。如果它是零,z 是数字 num 的约数。

当我们检查所有数字时,其中 none 个是 num 的约数,我们可以说 num 是质数,因为它在 1 和它本身之间没有约数。

function isPrime(num) {
  for (let z = 2; z < num; z++) {
    if (num % z === 0) {
      return false;
    }
  }

  return true;
}