Ошибка в решении задачи по js. Итерация выводит все элементы, а не заданные
Ребят, при решении задачи у меня возникает сложность, подскажите, что не так я делаю? Вроде бы всё правильно делаю и задача не сложная, но что-то не так!
Дана функция, проверяющая числа на простоту:
function isPrime(num) {
for (let i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
С помощью приведенной функции найдите все простые числа в интервале от 1 до 100.
Моё решение такое:
let res=[];
for(let i=1; i<=100; i++){
if(isPrime(num));
res.push(num);
}
console.log(res);
function isPrime(num) {
for (let i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
Ответы (2 шт):
Вы пытаетесь поместить в массив переменную num, ее не существует, вам нужно передавать переменную i (ведь она принимает значение чисел от 1 до 100) в качестве параметра num.
let res = [];
for(let i=1; i<=100; i++){
if( isPrime(i) ) res.push(i);
}
console.log(res);
function isPrime(num) {
for (let i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
for(let i=1; i<=100; i++){
if(isPrime(num));
res.push(num);
}
во-первых, в данном участке коды вы проверяете/пушите непонятно откуда взявшийся num - правильно/логично было бы проверять/пушить текущее число isPrime(i)
во-вторых, две строки:
if(isPrime(num));
res.push(num);
первая - проверка и пустое тело - в чём смысл? не стесняйтесь добавлять скобки чтобы не упускать подобные моменты
вторая - пушите число в результирующий массив, при том что это вообще никак не затрагивает проверку (строку выше)
То есть, должно быть как-то так:
let res=[];
for(let i=1; i<=100; i++){
if(isPrime(i)) {
res.push(i)
}
}
console.log(res);
function isPrime(num) {
for (let i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}