今回は競技数学やってる人は大体知っているけどちゃんと言語化されているか怪しい事について書きます(なのでそこまで難しくは無いはず). IMOとかには出にくい内容かも知れないけどOMCには結構出そう.
まずは素因数分解について.
算術の基本定理, 素因数分解の一意性
全ての正整数は(は全ての素数を渡る, は毎に定まる非負整数で有限個を除いて)の形に一意的に表示出来る.
ここでは素因数分解を利用して式変形が出来るという話をします.
次に, いろいろな数論関数の定義と基本的性質を確認します.
を正整数, を実数とする.
- をの正の約数の個数とする.
- をの正の約数の総和とする.
- をの正の約数の乗の総和とする.
- を以下でと互いに素な正整数の個数とする.
- をの素因数の個数とする.
- をのの総和とする.
- をが平方因子を含まないなら, 含むならとして定める. (メビウス関数)
加法的関数, 乗法的関数
関数が任意の互いに素な正整数に対しを満たすときを加法的関数, を満たすなら乗法的関数という.
また任意の正整数に対しを満たすときを完全加法的関数, を満たすなら完全乗法的関数という.
上の関数は加法的関数か乗法的関数の例になっている. この関数のクラスは約数全体に関する操作に対してとても良く振る舞う.
加法的関数, 乗法的関数の基本性質
を加法的関数, を乗法的関数とし, を複素数とする. (ただし指数の分岐等が発生する場合は考えない)
- は加法的関数, は乗法的関数, は乗法的関数, は加法的関数. (また完全同士の演算等で完全性は保たれる)
- , 特にが完全加法的関数なら.
- , 特にが完全乗法的関数なら.
- , 特にが完全乗法的関数なら.(のときは分数の値はとしておく)
この定理から分かるよう, これらの関数を扱う際素数毎に考えると言うことが有効な事が多い. が乗法的関数になっているのは組み合わせ的考察によって分かる. 他は定義から加法関数或いは乗法的関数である事は明らかだろう. あとは平方剰余記号が完全乗法的関数だったりする. あとはが加法的関数, 冪乗や恒等写像が完全乗法的関数である事に注意すれば良いだろう.
少し例を見ていきましょう.まずは
OMC107F
.
OMC107F
正の整数に対し, その正の約数すべての相加平均をで表します. がの正の約数であるとき, が常に整数になるような, 以上以下の整数の総和を求めてください.
まずはが求まらないかと考えるとと書けます. これはもう素数毎に考えた方が良さそうなので としちゃいます. ここで条件をよく見るとの任意の約数についてとが整数になって欲しいと書いているのでは整数になってくれそう. 実際素冪の素因数を考えれば良いですね. これで完全に素数毎に考えることが出来ます.
を素数, を正整数としたとき任意の正整数についてが整数になるの条件を知ればよいです. ここでなのでが大きい状況は考えなくて良く. 見通しが立ってきます.
のとき
よりなら条件を満たす. 以下は奇素数としてよい.
のとき
そもそもだけ考えればよい. 条件はだから条件を満たすのはのときのみ.
のとき
しかあり得ないがが以下なので考える必要は無い.
よって条件を満たすはを因数として持たないもの. これは奇数全体からを除いたものなので求める値はである.
約数系の議論で素数毎に考えるモチベーションが分かっただろうか, (素数毎に考えるのは約数系の議論に限らず例えば中国の剰余定理を使う問題とかも素数毎に考えようとすると上手く行くケースが多い)
次の
2021ChinaTST test3P4
もかなり典型的な使い方である.
かなり約数系の議論をしそうである. さらにガウス記号系の関数(床, 天井, 割った商, 余り)は総和や階差をとると約数が絡んでくる場合が多いことを知っていると考察が進むだろう. ということで今回はを約数が絡んだ形で表すことを考えれば良さそうである. すると思いつくのはと見なして和を取る順序を変えた
を考えると良さそう. すると, っぽい気がする. これは全部乗法的関数なので素数毎に考えられそう! つまり
に注意すれば(と置き換えて)のときを示せば良い.(これは素冪の時の必要条件でもあると同値)ここまで来たら何やっても示せますね. (指数関数多項式を示す方法は二項定理, 帰納法, 微分が主な手法としてあるが今回は階差を取ると簡単になるので階差の大小を二項定理で示して帰納法を回すのが良いと思います)
ガウス記号と約数が絡む問題を置いておきます.
サーモン杯問題1
サーモン杯P1
数列を次のように定めます.
です.を求めてください.
ごち数のこの問題
もそうですね.
Poland MO 2018 問4
を正の整数とする. 平方因子をもたず, かつをで割った商が奇数であるような, 以下の正の整数は奇数個であることを示せ.
ごち数の解答では階差を考えていますが, ここでは自分が思いついた別解を紹介します.
まず, 奇数という条件が鬱陶しいです. これを解消するために何かが奇数個である事を示すならその何かに対応する奇数の値の総和が奇数である事を示せば良い. という定石を用いての総和が奇数である事を示そうとします.(丁度が奇数という条件があったので) すると総和に偶数を足しても偶奇は変わらないので平方因子を持たないで以下のものに対するの総和が奇数である事を示せば良いです. 平方因子の有無で変わるといえばメビウス関数ですね. 丁度平方因子を持たないときも偶奇を変えないのでが奇数である事を示せば良いということになります. ここで問題2と同じようにとして和の順序を交換すると(定理3)となって証明が終わります.
少しガウス記号から離れて別の問題を見ていきましょう.
2016ISLC2
2016ISLC2
正整数であって全てのの正の約数を長方形のマス目に以下の条件を満たすように書き込むことが出来るものを全て求めよ:
- 各マスには相異なるの正の約数が書き込まれている.
- 縦の列に書かれた数の総和は全て等しい.
- 横の列に書かれた数の総和は全て等しい.
ちょっと実験すれば以外はダメそうという気分になります. とりあえず状況設定として長方形のマス目の縦を行, 横を列とすると, となります. ここから上手く行かなさそうという感覚を言語化していきます. まずマス目に条件を満たす書き込み方が存在すると仮定すると, の約数の大きさはある程度均等にばらけている事が必要です.(というのもどの行(または列)で書かれている数の和が等しいので行ごとにある程度大きい値が必要) 一方の約数は小さい値は多くて大きい値は少ないです. これはまずそう, だから約数の大きさ系の不等式評価をすれば良いですね. 不等式評価なのでの大小関係も決めておいた方が良くてとするとだからとなります. さらにがどこかのマスに書き込まれているので各列に書かれている数の総和は以上なので鳩ノ巣原理を考えると各列に以上の元が書かれています. ここから先は全体に注目するか部分に注目するかで二通りの方法があります.
全体に注目する方法
約数の総和はより大きいのでが成り立つはずです.これは素数毎に考えられそうな式なのでそのような変形をするととなります.
ということでとしてを考察する. (のとき)
よりを考える. のときの評価をすれば良い. のときは明らかにこれは未満. のときはとなる.
のとき, の評価である. のときはと簡単に議論できる. のとき値は, のとき値はとなる. を越えているのが少し厄介だが他の素因数が未満なのでなんとか出来そう.
実際求まった上界達を小さい順に並べるととなっているので素因数が二つあるときあり得る最大の値はであるのでのときのみ考えれば良い. これらは明らかに上手く行かない. よって求める値はのみ.
この方法は偶然上手く行った感のある解答である. 大きい約数が沢山あるという違和感を全部総和をとるという方法で表現していますが少し燃費が良くなさそうです. また, あまり約数を並べるという乗法を消化し切れた感じがしない. なのでを作ってみるまで上手く行くかどうかは五分五分な気分でした. またコーナーケースもあって面倒だったですね. もっとモチベーションにしていた大小関係の違和感をもっと直接的に扱ってみましょう.
もう少し部分に注目する方法
大きい約数が沢山あるのがまずかったのでした. 以上の約数が個以上あるんですよね. 大きいと扱いにくいので小さくしたくて, これは約数をに置き換えれば達成出来ます. これによって以下の約数が個以上ある事になります... これだとダメそうだけど入れ替えても議論は成立するので入れ替えてみると以下の約数が個以上ある事になります...これはヤバい. このままを言い, がからまで約数持つから矛盾でも良いのですが, 以下が未満に変えれればそれで勝ちです. (なので)各行個の元があるので総和はより大きくなります. だから鳩ノ巣原理よりより大きい約数が個以上あって, これは未満の約数が個以上ある事になって矛盾. めでたしめでたし.
本当はを書きたかったけどの方が明らかに筋が良いんですよね()
次,
ISL2016N2
.
ISL2016N2
正整数の正の約数のうちで割って余るものの個数をで表す.
が取りうる正整数を全て求めよ.
これはとりあえずを考察してみたくなります.
と素因数分解します. のときを素因数に持つ約数をで割った余りはにはならないのでの因数はに関与しません. 次にのときだからで割って余るかどうかはに依存し, 余るならそれに対して通りのの指数の取り方が出来ます. なので結局因数を持つことになります. 最後にを考えます. さてこれをどう求めるか. 色々やり方はあると思いますが自分はOMCにありそうな母関数っぽいあれをやりました. 次の問題はみんなの二項定理を使うと思います. それの類似です.
今回はとで割って余る約数の個数からで割って余る約数の個数を引くを考えます. すると嬉しいことにこの値はが全て偶数ならでそうでないならです. だからの全ての素因数をで割った余りがのときが分かりました.
結局(ただしの素因数をで割った余りは, の素因数をで割った余りは)とするととなります. が平方数でないならこの値はとなるため全ての偶数は条件を満たします. が平方数の時を考えれば良いのですこのときはは互いに素なのでとなり, もとの分数はとなります. これはだから奇数の合成数と奇数の合成数全体を動くから, 求める答えはと全ての合成数となる.
が分かってしまえば場合分けとかは分かりやすいと思います.
後は練習問題を置いておきます. 問題提供とかあるとうれしいかも?
ISL2004N2
ISL2009N5
ABC212G
OMC042D
ELMOSLP2010N1
ゼータ関数のオイラー積
自分がこれを意識したのはゼータ関数のオイラー積について勉強したときなので少しだけ書きます.
ゼータ関数はと表される関数ですが, これのオイラー積表示はまさにこの式変形を使っています. という感じですね. (厳密には収束性や微分可能性についての議論がいりますが割愛)ということはゼータ関数の和の分子に乗法的関数を乗っけても上手くオイラー積が作れそう... 例えばルジャンドル記号を用いた場合はディリクレの関数とか名前が付いてたり, より一般にも関数という関数のクラスが沢山あり, 代数体の様々な性質を調べるために用いられているそうです.
この辺の記事
あたりを読んでみると面白いかも知れないです.