почему выводится двойка
есть алгоритм выведения всех простых чисел методом сравнения числа 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--) {
^^^^^