老师,这个逻辑哪里错了?

老师,这个逻辑哪里错了?

关于寻找100以内质数的问题,要求i不能被j整除,可以用continue的方式.但是我试着直接用

i % j !=0,按理说它直接表示了i不能被j整除,但是结果却不对,想了半天都不知道逻辑哪里错了。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        for (var i = 2; i <= 100; i++) {
            for (var j = 2; j < i; j++) {
                if (i % j != 0) {
                    console.log(i);
                }
            }
        }
    </script>
</body>

</html>


正在回答

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

1回答

同学你好,当i符合条件的时候内循环没有结束继续执行导致多次打印;我们可以先举个小例子,参考如下:

https://img1.sycdn.imooc.com//climg/639142c00909f5f603050144.jpg

当a=2的时候,因为嵌套循环中的条件为n<a;所以,第二个for循环不走,

当a=3的时候,n  =2;  n<a;此时符合条件,继续走if判断,3%2 != 0;符合条件,打印出3;

当a=4的时候,n=2;此时符合条件,继续走if判断,4%2 == 0;不符合条件,不打印;

                       n++; n=3;此时符合条件,继续走if判断,4%3 != 0;符合条件,打印出4;

                       此时的a=4;应该结束循环,但是它依然在执行内循环。导致又打印出了4。


当a=5的时候,n=2;此时符合条件,继续走if判断,5%2 != 0;符合条件,打印出5;

                       n++; n=3;此时符合条件,继续走if判断,5%3 != 0;符合条件,打印出5;

                       n++; n=4;此时符合条件,继续走if判断,5%4 != 0;符合条件,打印出5;

a<=5,循环结束;

所以打印出了3、4、5、5、5这样的结果;

从上面的案例来分析,打印的结果并不符合我们的需求,所以同学这样写结果是不对,

因此参考学习老师的思路使用穷举法:

https://img1.sycdn.imooc.com//climg/639143f509da8ade08550305.jpg

祝学习愉快~

  • 慕粉3319331 提问者 #1

    哦,老师,我明白了,是我逻辑错了,意思就是用continue outer的话,它的内循环一旦不满足条件,进行这个内循环的外循环也会马上终止直接进入下一个外循环。而我这个错误的原因是即使有一个内循环不满足条件,它还会再进入下一个内循环,一旦下一个内循环符合条件,它也会被认定为为质数,但实际上它不是质数。

    2022-12-08 13:48:07
  • imooc_慕慕 回复 提问者 慕粉3319331 #2

    同学你好,理解是对的,很棒,祝学习愉快~

    2022-12-08 14:05:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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