Цифровой корень натурального числа

Цифровой корень натурального числа


Ответ:

const digitalRootNumber = (number) => {
  let digit = 0,
    sum = 0;
  while (number != 0) {
    digit = number % 10; // получаем очередную цифру числа number
    sum += digit; // суммируем цифры числа number
    number = Math.trunc(number / 10); // переходим к следующей цифре числа
  }

  // если sum уже меньше 10, то выводим результат,
  // иначе снова запускаем поиск цифрового корня, но уже для sum
  return sum < 10 ? sum : digitalRootNumber(sum);
};

const digitalRootNumber2 = (number) => {
  return ((number - 1) % 9) + 1;
};

Объяснение:

  1. Первое решение - довольно простое, с помощью последовательного нахождения остатка от деления на 10.

2. Второе решение - более рациональное, основанное на свойствах цифрового корня числа N:

  • DigitalRoot(N) = n, если n <= 9.
  • DigitalRoot(N) = 9, если n кратно 9
  • DigitalRoot(N) = n % 9, если n не кратно 9

Складывая два этих свойства, мы получим следующую формулу:

DigitalRoot(n) = (n - 1) % 9 + 1

Подробное обоснование этих свойств вы можете найти здесь:


Код для проверки:

const digitalRootNumber = (number) => {
  let digit = 0,
    sum = 0;
  while (number != 0) {
    digit = number % 10; // получаем очередную цифру числа number
    sum += digit; // суммируем цифры числа number
    number = Math.trunc(number / 10); // переходим к след.цифре числа
  }

  // если sum уже меньше 10, то выводим результат,
  // иначе снова запускаем поиск цифр.корня но уже для sum
  return sum < 10 ? sum : digitalRootNumber(sum);
};

const digitalRootNumber2 = (number) => {
  return ((number - 1) % 9) + 1;
};

console.log(digitalRootNumber(65536)); // 7
console.log(digitalRootNumber2(65536)); // 7


Report Page