これはいい倍数判定法
「7の倍数」の判定法 - hiroyukikojimaの日記より。この判定法は寡聞にして知りませんでしたが、面白いですね。これを自力で再発見したという学生時代の某数学者がどなたなのかも興味深いですが*1。
結論からいうと、「十の位以上と一の位を切り離し、前者から後者の2倍を引く。この操作を繰り返して、2桁か1桁になって、それが7の倍数なら元の数も7の倍数」というものである。
「7の倍数」の判定法 - hiroyukikojimaの日記
(引用時中略)
なぜこれで7の倍数が判定できるか、はとても良い練習問題なので、読者自身で楽しんでいただきたい。
というわけでちょっと楽しんでみたところ、n進数表記でのkの倍数判定法は、(kが素数でなくても)nとkが互いに素なら同様に構成できるっぽいことが判明。例えば、元の例を引っくり返してn=7進数表記でk=10の倍数の判定というひねくれた状況を考えてみると、「下二桁とそれ以外を切り離し、後者から前者を引く、という操作を繰り返してもう引けなくなった(引くとマイナスになってしまう)ときの数が10の倍数であるとき、かつそのときに限りもとの数も10の倍数」という判定法が出来上がります。
実際に試してみると、7進法の654321*2の場合は654321→6522→43、となりこれは10進法の31なのでもとの数は10の倍数ではありません。一方7進法の654346*3では654346→6464→0(7進法で計算していることに注意)となるのでもとの数は10の倍数、となります。
余白は充分にありますが時間はないので証明は伏せておきます。興味のある方はどうぞ。
結論。全ての奇数について倍数判定できる16進数最強*4。