@follybang

Как переписать функцию используя циклы while вместо for?

Функция должна выводить простые числа на промежутке от 1 до n.
Есть работающая функция которая использует циклы for:
function getPrimes(n) {
  a: for (let i = 2; i <= n; i += 1) {
    for (let j = 2; j < i; j += 1) {
      if (i % j === 0) {
        continue a;
      }
    }
    console.log(i);
  }
}
getPrimes(120);


Есть моя функция, что использует циклы while, последний вариант которой выглядит так:
function getPrimes(n) {
  let i = 2;
  a: while (i <= n) {
    let j = 2;
    while (j < i) {
      if (i % j === 0) {
        continue a;
      }
      j += 1;
    }
    console.log(i);
    i += 1;
  }
}
getPrimes(120);

Функция выводит в консоль 2, 3. После чего какой-то цикл становиться бесконечным и браузер подвисает.
В чём критическая ошибка и как заставить её работать используя циклы while?
  • Вопрос задан
  • 381 просмотр
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Непонятно, зачем использовать цикл while если задача прекрасно решается через цикл for.
А ошибка в том, что при continue внешнего цикла в первом случае происходит i += 1, а вот втором - нет
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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