提问人:Diego Machin 提问时间:11/1/2023 更新时间:11/1/2023 访问量:58
为什么我的“while”代码不起作用,而 for one 可以?
why my 'while' code doesn't work, but the for one does?
问:
我正在学习javascript..我的“while”循环输出毫无意义的东西,但“for”循环可以工作(它给出了一个以 10 为限制的质数),我检查了语法和“;”,还剩下什么?
这是“用于”的工作:
let n = 10;
nextPrime:
for (let i = 2; i <= n; i++) { // for each i...
for (let j = 2; j < i; j++) { // look for a divisor..
if (i % j == 0 ) continue nextPrime; // not a prime, go next i
}
alert( i ); // a prime
}
这个效果很好。给出 2,3,5,7,它们是质数。.
这是“while”:
let n = 10; /*limit for the loop*/
let i = 2; /*base*/
let j = 2; /*factor*/
nextPrime:
while (i <= n) {
while (j < i) {
if (i % j == 0) {
continue nextPrime;
}
j++;
}
i++;
alert(i);
}
这个给了我毫无意义的数字(3,4,5,6,7,8,9,10,11)。但是为什么?解决方案是什么?
答:
0赞
AztecCodes
11/1/2023
#1
JavaScript while 循环问题
我理解为什么你的素数生成器的实现没有产生预期的结果。主要问题在于 、 和 语句的放置位置。此外,在确定质数后,您似乎没有重置 to 的值。while-loop
i++
j++
alert(i)
j
2
修订后的 while-loop 代码:
let n = 10; /*limit for loop*/
let i = 2; /*base*/
nextPrime:
while (i <= n) {
let j = 2; /*factor*/
while (j < i) {
if (i % j == 0) {
i++;
continue nextPrime;
}
j++;
}
alert(i);
i++;
}
评论
0赞
Diego Machin
11/1/2023
我的家伙,你是个天才!,我不知道为什么我需要在继续之前将另一个 i++ 放入 if 中。.但是你知道你的东西,但是你有没有解释为什么会发生这种情况?
0赞
Diego Machin
11/1/2023
顺便说一句,我只是遵循了“FOR”和“WHILE”的语法,同时进行了这种转换,期望不添加任何内容。编程之美..
0赞
AztecCodes
11/1/2023
@DiegoMachin 对不起,我不太明白你的问题。
0赞
Diego Machin
11/1/2023
查看您的代码..i++ 在 while 和 i++ 在 if 中,你做了两次并且它工作得很好,现在看到“for”一个。.只需 1 个 i++,它也可以工作。.问题是为什么在“while”中需要一个 i++,为什么“for”不需要它?
0赞
AztecCodes
11/1/2023
@DiegoMachin 否则,当它可以通过 the 被整除时,不会得到 +1,逻辑就会被破坏。j
i
评论
j
while
for
i
alert
while