@mirikkingg

Поиск наименьшего делителя, почему мой код не работает?

Задача найти наименьший делитель. Мне не нужен готовый код, я хочу понять, что у меня не так?

let num = 4; // задается функцией .
const smallestDivisor = (num) => {
  let divider = 1;
if (num % 2 === 0 && num > 0) {
  return num;
} else if (num <= 0) {
  return NaN;
} else {
  while (num % divider === 1) {
    divider = divider + 1;
    return divider;
  }
}
}


Почему код выведет undefined
  • Вопрос задан
  • 218 просмотров
Решения вопроса 1
@mirikkingg Автор вопроса
const smallestDivisor = (num) => {
let divider = 2;
if (num % 2 === 0 && num > 0) {
return 2;
} else if (num <= 0) {
return NaN;
} else {
if (num === 1) { return num; }
while (num % divider !== 0) {
divider++;
}
return divider;
}
}
Все ломалось из-за единицы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Вынесите return из while
let num = 4; // задается функцией .
const smallestDivisor = (num) => {
let divider = 1;
if (num % 2 === 0 && num > 0) {
//return num;
return 2
} else if (num <= 0) {
return NaN;
} else {
while (num % divider === 1) {
divider = divider + 1;
//return divider;
}
return divider;
}
}
//console.log(smallestDivisor(num)) //=>4
Ответ написан
@evgeniy-kolmak
const smallestDivisor = (num) => {
  if (num % 2 === 0 && num > 0) {
    return 2;
  } else if (num <= 0) {
    return NaN;
  } else if (num === 1) {
    return num;
  }
  // Проверки на корректный ввод данных для значения "num"
  const devider = (count = 2) => {
    if (num % count !== 0) { /* Если "Num" делится на значение "devider" с остатком (остаток от деления не равен 0,  к значению делителя прибовляем (+1) */
      return devider(count + 1);
    } else {
      return count; /* Дефолтное значение (если остаток от деления равен 0, count остается прежним) */
    }
  }
  return devider();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы