Number(i) 在下面的代码中被传递到函数中,有人可以解释一下循环在代码中是如何工作的

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

提问人:K. Sai Bharadwaj 提问时间:9/23/2020 最后编辑:AndreasK. Sai Bharadwaj 更新时间:9/23/2020 访问量:35

问:

法典:

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

JavaScript 函数 for-loop 返回 布尔逻辑

评论

1赞 Andreas 9/23/2020
脚本不会执行任何操作(正如您在执行代码片段时所看到的)
0赞 Przemysław Niemiec 9/23/2020
请更具体一点:你说的“循环是如何工作的”是什么意思?我们是否应该向您解释一下“for”循环是如何工作的?或者,也许我们应该向您解释一下这段代码如何检查该数字是否为质数?
0赞 K. Sai Bharadwaj 9/23/2020
实际上我被初始化为 500。
0赞 Przemysław Niemiec 9/23/2020
顺便说一句,如上所述@Andreas,此代码不起作用,因为第二个 for 循环中的“i”未声明。如果你想得到一个像你的帖子一样的输出,你应该把它改成这样的东西:for( let i=500 ; i > 1 ; i-- )
0赞 K. Sai Bharadwaj 9/23/2020
@Przemys ław Niemiec,您能否解释一下此代码如何检查该数字是否为质数。

答:

0赞 Przemysław Niemiec 9/23/2020 #1

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

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

因此,如果数字 num1num 之间有任何除数,则 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;
}