首页 > 解决方案 > Number(i) 在下面的代码中被传递到函数中。有人可以解释循环在代码中是如何工作的

问题描述

代码:

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 179 173 167 163 157 151 149 149 139 137 137 131 127 113 109 107 103 101 97 89 89 83 79 79 73 71 67 67 61 59 59 53 47 43 41 37 37 31 29 31 29 31 29 23 19 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 7 5 3 2 2 2

标签: javascriptfunctionfor-loopreturnboolean-logic

解决方案


通过您的评论,我可以看到,您实际上是在问:“代码如何检查数字是否为素数”。所以,一开始,我们应该说,什么是“质数”。

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

因此,如果数字num在1num之间有任何除数,则 isPrime() 函数应该返回false

所以,这就是为什么您的代码正在寻找1num之间的每个整数:

for (let z = 2; z < num; z++)

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

当我们检查所有数字时,它们都不是num的除数,我们可以说num是素数,因为它在 1 和它自己之间没有除数。

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

  return true;
}

推荐阅读