markdown
合同式で余りを処理する定石md 0944b20
reference/math/algebra/congruence-remainder-techniques.reference.n.md
合同式で余りを処理する定石
mathalgebranumber-theoryreference
11. 使う場面
- 巨大な整数・冪の余りや末尾を求める
- n\mid A を示す、または整数解が存在しないことを余りで示す
- 曜日など周期だけが重要な量を扱う
- 一次合同式 ax\equiv b\pmod n を解く
22. 見分け方
求めるものが「n で割った余り」または「n の倍数か」なら、値全体を計算せず、早い段階で法 n による合同式へ移す。末尾一桁なら法 10、偶奇なら法 2、各桁の和による整除なら法 3 または 9 を候補にする。
33. 使う公式
a\equiv b\pmod n\iff n\mid(a-b)
a\equiv b, c\equiv d\pmod n\Longrightarrow a+c\equiv b+d,\quad ac\equiv bd\pmod n
加法・減法・乗法と非負整数乗は合同を保存する。除法は一般には合同を保存しない。ca\equiv cb\pmod n から a\equiv b\pmod n を得るには、gcd(c,n)=1、つまり c と n が互いに素であることが十分条件である。
data/lecture/math/algebra/congruences-and-remainders.lecture.n.md
44. 解き方の手順
- 問いから法 n を決定する。
- 各数を計算しやすい代表元へ置換する。n-1\equiv-1\pmod n も利用する。
- 冪なら余りの反復を列挙し、周期の開始位置を特定する。底と法が互いに素なら、初項からの周期を用いて指数を縮約できる。互いに素でなければ、前周期を周期部分から分離する。
- 一次合同式なら d=\gcd(a,n) を計算し、d\mid b を確認する。成立しなければ解はない。
- d\mid b なら a'=a/d、b'=b/d、n'=n/d とし、a' の法 n' における逆元を用いて x\equiv (a')^{-1}b'\pmod {n'} を得る。法 n では d 個の解 x_0+kn'(0\le k<d)になる。
- 最小非負剰余で答え、元の式へ代入して検算する。
55. 判別と注意点
複数の法の条件を同時に満たす整数を求める場合は、中国剰余定理へ進む。法が互いに素でない場合は、法どうしの最大公約数を法として余りが一致するか、先に確認する。冪の周期にフェルマーの小定理を使うときは、底と法が互いに素であることを確認する。
data/lecture/math/number-theory/chinese-remainder-theorem.lecture.n.md
66. 落とし穴
- 合同記号を等号と同じものとして扱う
- 法を書かず、途中で異なる法を混在させる
- 係数と法が互いに素か確認せず、両辺を割る
- 負の代表元を最小非負剰余へ戻さず答える