Условие: Напишите код, который выводит все простые числа из интервала от 2 до n. Для n = 10 результат должен быть 2,3,5,7.
let n = 20;
for (let i = 2; i <= n; i++) {
for (let j = 2; j <= i; j++) {
if ((i % j == 0) && (j != i)) {
break;
} else {
console.log(i);
break;
}
}
}
В этом решении выводит 2 3 5 7 9 Не могу понять, почему сюда попадает число 9. Подскажите, кто знает Заранее спасибо!
Вы совершенно зря увлекаетесь оператором break. Помимо очевидной ненужности в таком простом коде вы получаете совершенно не читаемый и плохо отлаживаемый код
алгоритм прост:
1) заведем flag=1 - число простое
2) переберем все делители числа от 2 до i/2 если нашли делитель, то flag=0 (составное) и прекратили перебор делителей
3) если flag=1 то число выводим
let n = 20;
for (let i = 2; i <= n; i++) {
let flag=1;
for (let j = 2; (j <= i/2)&&(flag==1); j=j+1) {
if (i%j==0) {
flag=0}
}
}
if (flag==1) {console.log(i);}
}
Не надо проверять до i/2
, как вам предложили - это слишком долго. До квадратного корня хватит!
let n = 20;
for (let i = 2; i <= n; i++) {
let flag = 1;
if (i > 2 && i % 2 != 0)
{
for (let j = 3; j*j <= i ; j=j+2)
{
if (i%j==0)
{
flag=0;
break;
}
}
}
else if (i != 2) flag = 0;
if (flag==1) {console.log(i);}
}
function isSimple (n) {
if (n === 1 || n === 0) {
return false;
} else {
for(let i = 2; i < n; i++) {
if(n % i === 0) {
return false;
}
}
return true;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня на моем ПК, все запускается без ошибокВ папку с
Что означает такая запись: class MyClass; ? объявление существующего класса без реализации