tripcollor
@tripcollor

Как работает цикл с внутренним циклом для вывода простых чисел?

Начал изучать JavaScript по учебнику https://learn.javascript.ru
попалась такая задача :

Натуральное число, большее 1, называется простым, если оно ни на что не делится, кроме себя и 1.
Другими словами, n>1 – простое, если при делении на любое число от 2 до n-1 есть остаток.
Создайте код, который выводит все простые числа из интервала от 2 до 10. Результат должен быть: 2,3,5,7.
P.S. Код также должен легко модифицироваться для любых других интервалов.

Дано такое решение:
nextPrime:
  for (var i = 2; i < 10; i++) {

    for (var j = 2; j < i; j++) {
      if (i % j == 0) continue nextPrime;
    }

    alert( i ); // простое


Помогите понять как он работает. Я попробовал разобрать все по действиям и в итоге у меня получилось то что вообще все числа от 2 - 10 должны выводится))) но так не происходит. Подскажите где я ошибся и что не правильно понял.

Как я рассуждал:
1) Запускается внешний цикл
а)первая итерация: i = 2, выполняется условие i < 10
б)далее залезаем во внутренний цикл. первая итерация во внутреннем цикле: j = 2, условие j < i (2 < 2) не выполняется.
в)выходим из внутреннего цикла в выполняем действие j++ == (3)
г)выполняем alert(2)
д)выполняем действие i++ == (3)

2)Запускаем вторую итерацию внешнего цикла:
а) i = 3, выполняется условие i < 10
б) далее залезаем во внутренний цикл. первая итерация во внутреннем цикле: j = 3, условие j < i (3 < 3) не выполняется.
в)выходим из внутреннего цикла в выполняем действие j++ == (4)
г)выполняем alert(3)
д)выполняем действие i++ == (4)

3) Запускаем третью итерацию внешнего цикла:
а) i = 4, выполняется условие i < 10
б) далее залезаем во внутренний цикл.
первая итерация во внутреннем цикле: j = 4, условие j < i (4 < 4) не выполняется.
в)выходим из внутреннего цикла в выполняем действие j++ == (5)
г)выполняем alert(4)....(хотя она не выводится=)))

И так далее))) по моему расчету условие if вообще ни когда не срабатывает, что не так я понял в работе циклов объясните, щас сума сойду)
  • Вопрос задан
  • 2276 просмотров
Решения вопроса 1
@pekc83
1)Как только происходит выход из цикла, все данные которые доступны только внутри него и не имеют внешних ссылок - пропадают. Соответственно при каждом входе во внутренний цикл у вас будет новая переменная j = 2.
2)В случае j < i (2 < 2) до j++ выполнение не дойдет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Duha666
@Duha666
"первая итерация во внутреннем цикле: j = 4, условие j < i (4 < 4) не выполняется."
Нет, первая итерация - j = 2.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы