Task 78. Цифровой корень числа

Task 78. Цифровой корень числа

UniLecs

Задача: цифровой корень натурального числа — это цифра, полученная в результате итеративного процесса суммирования цифр, на каждой итерации которого для подсчета суммы цифр берут результат, полученный на предыдущей итерации. Этот процесс повторяется до тех пор, пока не будет получена одна цифра. 

Необходимо составить программу нахождения цифрового корня натурального числа.

Входные данные: N - натуральное число, где 0 <= N <= 10^9

Вывод: цифровой корень числа N

Пример:

Number = 65536

DigitalRoot = 7

Идея: есть несколько способов найти цифровой корень числа:

  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

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

Реализация:

реализация на C#

https://gist.github.com/unilecs/3026957246ccfba5a57e9f9e80844c16

Тест:

https://dotnetfiddle.net/BO1e3N


Report Page