почему выводится двойка

есть алгоритм выведения всех простых чисел методом сравнения числа N со всеми числами до него:

let gen = prompt("введите число, вы получите все простые числа от 2 до этого числа");
let check = true;
for (let i = gen - 1; i >= 2; i--) {
  check = true;
  for (let j = i - 1; j > 1; j--) {
    // if(j == 1) {
    // 	break;
    // }
    if (i % j == 0) {
      check = false;
      break;
    }
  }
  if (check) {
    document.write(i + "<br/>");
  }
}

скажем, будет введено число 3. По идее двойка выводится никак не должна, ведь i == 2, а j == 1, это значит, что i будет делится на j без остатка:

if(i % j == 0) { //i % j == 0, где i == 2, j == 1
    check = false;
    break;
}

вследствие этого check == false и мы переходим к if(check), который не даст возможности вывести i (i == 2). Однако мы видим, что при вводе 3 в переменную gen, двойка все же выводится как простое число, хотя она делится без остатка на j


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

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

... а j == 1, ...

Если так рассуждать, то у Вас ни одно число не вывелось бы.

for (let j = i - 1; j > 1; j--) {
                    ^^^^^
→ Ссылка