3の倍数で偉くなる

10進数で表した自然数の各桁を足し合わせた結果3の倍数になる場合、元の整数も3の倍数になる。わりと有名な話だが証明ってどうやるんだろう・・・と、とある電車の中で友人と話していた。遥か昔にやった気がするのだが数論とかそんな凄いことはやっていないと記憶しているのだが覚えていないのでもっかいやってみた。

各桁の数値をanと置くと10進数は以下のように表せる。
\sum_n a_n 10^n
この自然数の各桁の合計が3の倍数なのだから以下が成り立つ。
\sum_n a_n \equiv 0 (mod 3)
生意気に合同式とか書いているが要するに3の倍数だというのを記号で表しただけである。
で、これらを式変形していくと・・・
\sum_n a_n 10^n
 = \sum_n a_n (10^n - 1 + 1)
 = \sum_n a_n (10^n - 1) + \sum_n a_n
 = \sum_n a_n \{(10 - 1)\sum^{n-1}_k 10^k\} + \sum_n a_n
 = 9 \sum_n a_n \{\sum^{n-1}_k 10^k\} + \sum_n a_n
というわけで、第1項がanの条件によらず3の倍数(9の倍数)であり、第2項のみで3の倍数かどうかが決定する。その第2項は各項を足し合わせた値であり、これが3の倍数の場合元の自然数も3の倍数になり逆もまた成り立つ。ちなみに3の倍数でなくても9の倍数も同じ方法で出来そうですね。初めて知りました(ぉ

数学っぽく(?)書いているのでなんとなく難しそうに見えるが実際は中学生でも十分理解できるくらい簡単である(流石に小学生はきついかも)。ためしに具体的に4桁で書いてみると、
a + b*10 + c*100 + d*1000
 = a + b*(9+1) + c*(99+1) + d*(999+1)
 = (a+b+c+d) + b*9 + c*99 + d*999
というわけで見事各項の数値の和で表せる。

しかし遥か昔にこんな計算をした覚えが無いので当時はきっと何かの間違いだと思われる。