Ошибка в решении задачи по 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 шт):

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

Вы пытаетесь поместить в массив переменную 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;
}
→ Ссылка
Автор решения: InDevX
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;
}

→ Ссылка