双层循环取得第一个质数为“2”,还是不太明白

双层循环取得第一个质数为“2”,还是不太明白

相关代码:

<body>
<script>
ourter: for (var i = 2; i <= 100; i++) {
for (var j = 2; j < i; j++) {
if (i % j == 0) {
continue ourter;
}
}
document.write(i + '<br>');
}
</script>
</body>

问题描述:

第一次循环:

i=2,满足i<=100这个条件,于是向下;

j=2,不能满足j<i(2并不小于2)这个条件,所以我的理解是第一次循环失败,直接返回第一层进行i++;

第二次循环:

i=3,满足i<=100,继续;

j=2(因为之前的判断失败,没有执行j++),j<i(2<3)成立,于是判断i % j即(3 % 2 != 0)

抛出3这个数字来

所以,第一个质数“2”,是怎么输出来的?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,依此执行4%2,4%3的,代码执行的过程可以参考如下解析理解:

  • i=2时,满足i<=100,进入外层循环;j=2,不满足j<i,跳过内层循环,直接执行 document.write(i + '<br>'); 第一次输出结果为2, 然后执行i++

  • i=3时,满足i<=100,进入外层循环;j=2,满足j<i,进入内层循环,执行if语句,由于3 % 2 == 1,if里面的语句不会执行,接着执行j++,此时j的值为3,不满足j< i, 跳过内层循环,直接执行 document.write(i + '<br>'); 输出结果为3

  • i = 4时, 满足i<=100,进入外层循环;j = 2, 满足j<i,进入内层循环, 执行if语句,由于4 % 2 == 0,if里面会执行, 跳出内层循环,不会再执行后面的document.write(i + '<br>'); 。直接进入外层循环

  •  i = 5时,满足i<=100,进入外层循环;j=2,满足j<i,进入内层循环,执行if语句,由于5 % 2 == 1,if里面的语句不会执行,接着执行j++,

    此时j的值为3,满足j< i, 进入内层循环,执行if语句,由于5 % 3 == 2 if里面的语句不会执行,接着执行j++

    此时j的值为4,满足j< i, 进入内层循环,执行if语句,由于5 % 4 == 1 if里面的语句不会执行,接着执行j++

    此时j的值为5,不满足j< i, 跳过内层循环,直接执行 document.write(i + '<br>'); 输出结果为5

  • i= 6,满足i<=100,进入外层循环;j=2,满足j<i,进入内层循环,执行if语句,由于6 % 2 == 0,if里面会执行, 跳出内层循环,不会再执行后面的document.write(i + '<br>'); 。直接进入外层循环

  •  i = 7 满足i<=100,进入外层循环;j=2,满足j<i,进入内层循环,执行if语句,由于7 % 2 == 1,if里面的语句不会执行,接着执行j++

    此时j的值为3,满足j< i, 进入内层循环,执行if语句,由于7 % 3 == 1 if里面的语句不会执行,接着执行j++

    此时j的值为4,满足j< i, 进入内层循环,执行if语句,由于7 % 4 == 3 if里面的语句不会执行,接着执行j++

    此时j的值为5,满足j< i, 进入内层循环,执行if语句,由于7 % 5 == 2 if里面的语句不会执行,接着执行j++

    此时j的值为6,满足j< i, 进入内层循环,执行if语句,由于7 % 6 == 1 if里面的语句不会执行,接着执行j++

    此时j的值为7, 不满足j< i, 跳过内层循环,直接执行 document.write(i + '<br>'); 输出结果为7

依此类推.... 最终输出的结果是2,3,5,7....

祝学习愉快~

  • 白妖 提问者 #1

    如果有十颗星的话,就给二十颗星,说的太详细了,感谢老师!!

    2021-03-10 15:28:19
好帮手慕慕子 2021-03-09 19:20:28

同学你好,因为i=2,满足i<=100这个条件,于是进入外层循环,执行内部的代码,由于j= 2时,不满足j < i的条件,所以不会执行内层循环,但是会继续往后执行外层循环内部的代码,即:document.write(i + '<br>');, 所以第一次输出的结果为2。

祝学习愉快~

  • 提问者 白妖 #1

    第二次循环,i++,所以i=3,此时内层循环中j=2,j<i所以执行if语句并返回3;

    第三次循环,i++,所以i=4,此时内层循环中的j=3,所以执行if语句,但是这个if语句中的执行过程是直接4 % 3么还是依次进行4 % 2、4 % 3这样?

    2021-03-09 19:42:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师