Функция должна выводить простые числа на промежутке от 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?