Показать сообщение отдельно
  #6 (permalink)  
Старый 05.09.2021, 18:32
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от orloff
Что это вообще за трюк?
навскидку, немного коряво, но тем не менее.

1) Число делится на 9, если сумма его цифр делится на 9 (признак делимости, можно глянуть в википедии). Т.е. если у нас исходное число М = 9*N, то очевидно, digitalRoot придет к 9.

2) Теперь кейс, когда наше число не делится на 9, то есть равно М = 9*N + k, где k=1..8, или, по другому, M % 9 = k
Здесь можно легко доказать, что сумма цифр будет сохранять остаток от деления на 9, при выполнении digitalRoot, на каждой итерации.

Пусть последняя цифра числа 9*N оказалась равна m. Добавим k. Если m + k < 10, то просто последняя цифра увеличилась на k. Иначе, последняя цифра стала равна m + k - 10, стоящие перед ней n девяток обнулились, а недевятка перед ними увеличилась на 1. Сумма цифр поменялась на (m + k - 10) - m - n*9 + 1 = k - 9*p. То есть в любом случае остаток суммы цифр от деления на 9 стал равен k. Что, собственно, и доказывали.

Вот так и вышло, что сохраняя оный остаток, digitalRoot приходит либо к 9 в случае нулевого остатка, либо. самому остатку.
Ответить с цитированием