Какая взаимосвязь между остатком от деления на 9 и сумой всех цифр ?

DreamSeller

Новичок
Пользователь
Окт 17, 2020
1
0
1
Ребятки. Есть вопрос из области математики.
Есть строка, например строка "1955-10-28" суммируя все цифры в итоге приходим к 4. Теперь суть: как работает вот этот код
Код:
def life_path_number(s):
    return int(s.replace("-", "")) % 9 or 9
Какая взаимосвязь между остатком от деления на 9 и сумой всех цифр ?
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
78
7
8
Ребятки. Есть вопрос из области математики.
Есть строка, например строка "1955-10-28" суммируя все цифры в итоге приходим к 4. Теперь суть: как работает вот этот код
Код:
def life_path_number(s):
    return int(s.replace("-", "")) % 9 or 9
Какая взаимосвязь между остатком от деления на 9 и сумой всех цифр ?
" остаток от деления числа на 3 (или на 9) равен остатку от деления суммы его цифр на 3 (соответственно, 9), или иначе: число делится на 3 (или 9), если сумма его цифр делится на 3 (или 9). "
 

alext

Модератор
Команда форума
Модератор
Май 10, 2020
214
56
28
Признаки делимости тут ни при чем. Более правильный код ... % 9 or ... and 9
Тут речь идет о т.н. "полной" сумме цифр. Если сумма цифр двузначная, то цифры снова суммируются, пока не останется одна. Тут используются две вещи, во-первых свойство модуля (остатка от деления) "оборачиваться" вокруг делителя, и свойство остатка от деления на 9:
Для чисел больше 10 остаток от деления на 9 это такое число, в котором каждая цифра показывает количество десятков в числе. 20 % 9 = 2, потому 10 это 9 + 1, а 10 % 9 == 1. 30 % 9 == 3. Каждый десяток это 9 и единица.
150 % 9 == 1 (+) 5 == 6.
155 % 9 == 1 + 5 + 5 == 11, но остаток от деления на 9 не может быть больше 9, поэтому 11-9 == 2.
1234 % 9 == 100 (десятков) + 20 (десятков) + 3 (десятка) + 4 == 1 + 2 + 3 + 4 = 10 % 9 = 1
 

Форум IT Специалистов