Показать сообщение отдельно
  #17 (permalink)  
Старый 21.03.2019, 21:16
Интересующийся
Отправить личное сообщение для Allegro75 Посмотреть профиль Найти все сообщения от Allegro75
 
Регистрация: 13.03.2019
Сообщений: 14

Новую задачку решил.
Горазды же эти математики на придумывание неких сущностей. Первый раз слышу про "совершенные" числа.

Создайте функцию isPerfect, которая принимает число и возвращает true, если оно совершенное, и false — в ином случае.

Совершенное число — это положительное целое число, равное сумме его положительных делителей (не считая само число). Например, 6 — идеальное число, потому что 6 = 1 + 2 + 3.


Список совершенных чисел:
6
28,
496,
8128,
33 550 336,..


Моё решение:
const isPerfect = (num) => {
  if (num === 1) {
    return false;
  }
  let sumOfDividers = 1;
  let divider = 2;
  const half = num / 2;
  while (divider <= half) {
    if ((num % divider) === 0) {
      sumOfDividers += divider;
    }
    divider += 1;
  }
    
  if (num === sumOfDividers) {
    return true;
  }
  return false;
}
Ответить с цитированием