双层循环取得第一个质数为“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”,是怎么输出来的?
正在回答
同学你好,依此执行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积分~
来为老师/同学的回答评分吧
0 星