for (var j = 2; j < i; j++) {
if (i % j == 0) continue nextPrime;
}
alert( i ); // простое
}
Разобрал я его в дебаггере, чтобы понять, что и как.
И так, у нас алерт вывел 3, после этого i увеличился до 4. Так как continue заработал, я пришел к такому выводу, что j осталось 2, но почему, ведь оно увеличилось до 3?
Ярослав Иванов: Ничерта не понял ) Когда вы вынесли переменные , суть самого цикла вообще поменялось, что вызвало еще больше вопросов Почему это произошло , почему j теперь собственно меняется? Если есть минутка , не могли бы мне это объяснить.
BigPotato: Цикл верный, все отрабатывает как нужно. Если вы не понимаете простейший код то поищите уроки по js. У вас был вопрос почему J не меняется я дал ответ и поменял код. Почему надо снимать отметку с правильного ответа ? Вам блок-схему разрисовать как отрабатывает код ?
"Переменные надо выносить заранее" как-то не отвечает на вопрос "почему J не меняется"
J меняется, но ему каждую итерацию цикла nextPrime заново присваивается значение 2:
var i = 2;
nextPrime:
for (; i < 10; i++) {
var j = 2;
for (; j < i; j++) {
if (i % j == 0) continue nextPrime;
}
alert( i ); // простое
}
BigPotato: Ну написал бы я то, что написал Aves. Дальше то что ? Вы бы все равно написали "Ничерта не понял ) Когда вы вынесли переменные , суть самого цикла вообще поменялось, что вызвало еще больше вопросов" Итог: учите js и что такое циклы.
"Итог" у вас какой-то сомнительный. Переменную вы вынесли, но теперь выводятся не только простые числа, а все подряд от 1 до 10. Вместо того чтобы ответить, что j=2 срабатывает каждый раз при входе во внутренний цикл вы зачем-то написали код который делает НЕ ТО НУЖНО.