Не могу понять почему не работает алгоритм

Есть задание - составить алгоритм, ищущий все простые числа от 1 до x. Моё решение.

let x = 10;
let y = 2;
for (x; x > 1; --x) {
  for (y; y < x; ++y) {
        if (x % y === 0) break;
        if (y === x-1) {console.log(y)}
  }
}

Не могу понять в чём ошибка.


Ответы (1 шт):

Автор решения: CrazyElf

Переделанный код:

for (let x = 10; x > 1; --x) {
  let prime = true;
  for (let y = 2; y < x; ++y) {
        if (x % y === 0) {
            prime = false;
            break;
        }
  }
  if (prime) {
      console.log(x)
  }
}

Вывод:

7
5
3
2

Суть переделок:

  • Инициализация переменной y каждый раз внутри цикла по x, а не один раз как у вас
  • Печатаем на выходе x, а не y
  • Чтобы можно было вывести также и числа 1 и 2 пришлось переделать логику проверки - добавил булевый флаг для этого, без этой переделки 1 и 2 не напечатается
→ Ссылка