この記事は「合成数大富豪 Advent Calendar 2024 - Adventar」の16日目の記事になります。
こんにちは、アドベントカレンダーを入れ過ぎたことに早くも後悔しているOTTYです。
今日は割り切れる回数のお話です。主に、2,5で割り切れる回数の話になります。
合成数を探索するにあたって、2,5で割れる回数を調整したいことが多々あります。そのようなシーンで使える小技を紹介します。
また、実践上で2,5で割り切れる回数をド忘れしたときにその場で計算するテクニックにも活用できるはずです。特に後半で紹介する5Qチェックについてはそこそこ使えるはずです。
なお、この記事でnQ5のように書いたとき、nを1枚以上のトランプの札として1000*n+Q5を表しているものとします。
割り切れる回数の記号
が
で割り切れる回数を
と表します。*1また、約束として
とします。
要するに、は素因数分解したときのpの指数部分です。
例えば
を自然数とします。このとき以下が成り立ちます。
特にのとき、
が成り立ちます。この性質が今回のキモです。
これら性質は
としてや
を考えることですぐに分かります。
かっこよく書いているだけですが、考えてみると当たり前ですね。
しかしこれは2,5で割り切れる回数を知りたいときに強力な性質です。
5の倍数
まず、簡単な5の倍数の方からいきます。
自然数について
の末尾
桁が
で割れる
例えば、となるようなnQ5を考えたいと思ったら、
なので、末尾4桁を5^4で割れるようにしないといけません。
3Q5=5^5、8Q5=5^4*Kの頭に何つけてもとできます。
例:
93Q5=5^4*A49
68Q5=5^4*T9
Q8Q5=5^5*4A
別に末尾Q5にこだわりがないなら、6875=5^4*Jなどを末尾にすることも考えられますね。
合成数探索的には、上の命題を
の末尾
桁が
で割れない
例えば末尾JQ5について考えましょう。
nJQ5=10^5*n+5^3*89より、
となります。どんなにnを大きくしても3回しか割れないのです。
「nJQ5は5で3回しか割れない」という事実は合成数大富豪的に使えます。
具体例を沢山挙げるのは後日しますが、6JQ5=5^3*4889のように、JQ5,5^3の部分を固定して派生させることができます。(さらに89が固定できるケースもある)
同様にnKQ5=5^5*2^5*n+5^4*3*7なので、です。*2
例:
9KQ5=5^4*3*487
QKQ5=5^4*3*647
札の組を結構固定できているため、nJQ5,nKQ5を探索してたくさん覚えるのは良さそうですね。
2の倍数
2で割り切れる回数については、すぐ"見える"こともあります。
ここでは\を入れたところで数を区切ることにします。
68\Q8
T\448
64\88
このように、2で割れる回数が異なるように区切ることのできる数は、容易に2で割る回数がわかります。
もちろん、\を入れる場所は例なので、6\8Q8、T4\48とか他の分け方はいくらでもあります。また、2で割り切れる回数が異なる二数の和として考えることで6488=6360+128などとしても良いです。
5の倍数と同じように、自然数について
の末尾
桁が
で割れる
2でたくさん割れる数を探したいときは、末尾桁を
で割れるように固定して、その頭をうまいこと調整していくことでいい感じにできます。
例えば、末尾6桁をTKQで固定したら(TKQ=2^6*A583)、
nを奇数にすることで、nTKQが
なので、
です。
さらに割る数が2のとき特有の性質として次が成り立ちます。
を自然数とします。
のとき、
これを適用することで、nが奇数の時、nTKQは最低7回は割れることになります。
例:
7TKQ=2^7*3A8493
9TKQ=2^K*J*TA
全く本題とは関係ないですが、9TKQ=2^K*J*TA強くてマジでおススメです。
nを偶数にすると、
となるため、
が固定できます。
例:
8TKQ=2^6*Q6583
46TKQ=2^6*3^4*8893
おもろいですね。今はnTKQで探索していますが他にも色々と応用できそうです。nQ8、n888、nT88などなど各々が気に入ったものについて探索してみると発見がありそうです。(例は結構適当です。)
5Qチェック
末尾Qの数についてかなり重要だと思われるテクニックを紹介しておきます。
上で説明したことを用いただけなのですが、計算が単純かつそこそこ強力です。
末尾Qで2で割れる回数が9回以下の数に対して、5Qを引くことで2で割り切れる回数を判定できるテクニックとなります。
と考えることで、
ならば、
より、
ならば、
ならば、
となります。
また、ならば、
となります。
例:
T4Q=9900+512より、
J7Q=11200+512より、
3845Q=384000+512より、(384=128*3)
より、
このようなことが一瞬で分かります。これならド忘れしてもどうにかなりそうですし、合成数を覚えるにあたって使えそうです。
ただし、
のときは、注意です。
389Q=2^J*A9などを考えると、
より、
しか保証しないです。(計算早ければ暗算で1024で割れたりする?)
しかし、3枚出しにおいてはK3Qを除くと、2^10で割れる合成数は存在しないのでが元の数を2で割り切れる回数になります。
因みに明日のアドベントカレンダーでは末尾Qの合成数の性質について考えていきますが、5Qチェックと組み合わせることで高速な素因数分解を試みます。
なお、他の末尾についてもを引くことで判定することは可能ですが、まだ手をつけていません。
例えば、末尾2桁で分けて考えると、
末尾24なら1024=2^10を引く
末尾36なら1536=2^9*3を引く*3
末尾44なら6A44=2^11*3を引く
......などなど
どの末尾についても、割り切れる回数が大きい数を予め覚えておくのも強いかもしれませんね。
このように2で割り切れる回数のみであれば結構簡単にわかります。実際の素因数分解についてどうするかは問題ですが。
そのほかの素数で割り切れる回数については?
実戦で任意の素数に対して割れる回数を正確に判断することは難しいです。
たまたま上手くいく分け方を見つけられれば良いのですが、必ずしもうまく行くとは限りません。
例えば8Q43の3で割れる回数のように、8Q43=81000+243より、となります。
こういうパターンは合成数を覚えるときに面白い性質として一緒に覚えておいて、記憶のフックとして用いるのが良いでしょう。
おわりに
2,5の割り切れる回数について考えるのは、初等的ですが強力だと思います。
今回紹介したような、素因数とその肩、末尾の何桁かを固定しつつ、使いやすいものを探索するのは楽しいので是非皆さんやってみてください。
明日の記事では5Qチェックと組み合わせて使える末尾Qの性質について探っていきます。お楽しみに!!