Не могу понять почему не работает алгоритм
Есть задание - составить алгоритм, ищущий все простые числа от 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
не напечатается