markdown
約数と素因数分解を処理する定石md fe3db08
reference/math/algebra/divisor-and-prime-factorization-techniques.reference.n.md
約数と素因数分解を処理する定石
mathalgebranumber-theoryreference
11. 使う場面
- 約数の個数・総和、\gcd、\operatorname{lcm} を求める
- 「何乗で割り切れるか」「平方数か」を判定する
- 積や整除条件があり、整数そのものより各素因数の指数を追う方が簡潔な問題
22. 見分け方
積・約数・倍数は、まず n=\prod p_i^{a_i} と書いて素因数ごとの指数へ翻訳する。和 a+b や余りが主役なら、素因数分解を急がず合同式または互除法を選ぶ。
| 問われる量 | 指数での処理 |
| d\mid n | 各指数を 0\le b_i\le a_i から選ぶ |
| \gcd(m,n) | 共通素数の指数の最小値 |
| \operatorname{lcm}(m,n) | 全素数の指数の最大値 |
| 平方数 | すべての指数が偶数 |
33. 使う公式
\tau(n) を n の正の約数の個数、\sigma(n) をその総和とする。n=\prod_{i=1}^r p_i^{a_i}(p_i は相異なる素数、a_i\ge1)なら
\tau(n)=\prod_{i=1}^r(a_i+1),\qquad \sigma(n)=\prod_{i=1}^r\frac{p_i^{a_i+1}-1}{p_i-1}
適用条件は n が正整数で、素因数分解が完全であることである。各約数は \prod p_i^{b_i} と一意に書け、指数を独立に選べるため積になる。
data/lecture/math/algebra/prime-factorization-and-fundamental-theorem-of-arithmetic.lecture.n.md
44. 解き方の手順
- 対象を正の素数の積へ完全に分解する。
- 問いを「各素数の指数をどう選ぶか」へ翻訳する。
- 個数なら選択肢数を掛け、\gcd なら最小、\operatorname{lcm} なら最大を取る。
- 元の条件へ戻し、積の復元と整除を確認する。
55. 判別と注意点
\gcd の値だけなら、大きな整数を完全に素因数分解するより互除法が速い。素因数の構成や約数の全体が必要なときに本定石を選ぶ。負の整数では約数を正の約数に限定するか、符号も数えるかを問題文で確認する。1 は空積であり、\tau(1)=1 である。
66. 落とし穴
- 分解途中の合成数を素数とみなして公式を適用する
- \gcd で指数の最大値、\operatorname{lcm} で最小値を取る
- 約数の指数を 1 から選び、指数 0 の選択肢を落とす