老师,这个逻辑哪里错了?
关于寻找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>正在回答
同学你好,当i符合条件的时候内循环没有结束继续执行导致多次打印;我们可以先举个小例子,参考如下:

当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这样的结果;
从上面的案例来分析,打印的结果并不符合我们的需求,所以同学这样写结果是不对,
因此参考学习老师的思路使用穷举法:

祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星