Z[x],Q[x] 中的不可约多项式
\(\mathbb R[x]\) 中的不可约多项式是比较简单的,只有一次的 \(x-a\) 以及满足 \(p^2-4q<0\) 的诸如 \(x^2+px+q\) 的二次式;对于 \(\mathbb Z[x],\mathbb Q[x]\),该结果又如何呢?
对于 \(f\in \mathbb Q[x]\),总能把它乘上其所有系数分母的最小公倍数使其变成 \(\mathbb Z[x]\) 中的元素。
注意 \(\mathbb Z\) 的性质更差一些,它甚至不是一个域,所以根据我们的定义,\(x+1\) 和 \(2x+2\) 并不相伴:前者是后者的约数,而后者不是前者的约数。想要说明 \(\mathbb Z[x]\) 是唯一分解环,仍需再做证明。不过注意上述情况只会发生在各项系数 gcd \(\neq1\) 的情况,另一方面,如果 \(f\in\mathbb Z[x]\) 的各项系数 GCD 不为 \(1\),那么仍然可以将其化为 \(\gcd=1\) 的情况。
我们称各项系数最大公约数为 \(1\) 的多项式为本原多项式;对于 \(f\in\mathbb Z[x]\),设 \(c(f)\) 为其各项系数的最大公约数。那么总有 \(f=c(f)f_0\),其中 \(f_0\) 为本原多项式。
- 高斯引理:本原多项式的乘积仍是本原多项式。
其原理在于,对于本原多项式 \(f,g\),以及任意素数 \(p\),总是存在最小的 \(k,l\) 使得 \([x^k]f(x),[x^l]g(x)\) 不是 \(p\) 的倍数,而 \(0\le i<k,0\le j<l\) 的 \([x^i]f(x),[x^j]g(x)\) 皆为 \(p\) 的倍数。这样一来 \([x^{k+l}]f(x)g(x)\) 就不是 \(p\) 的倍数,这表明任意素数 \(p\) 都有 \(fg\) 的某项系数不是它的倍数,故 \(fg\) 是本原多项式。
由此我们可以证明:对于本原多项式 \(f\in\mathbb Z[x]\),它作为 \(\mathbb Z[x]\) 的元素不可约和作为 \(\mathbb Q[x]\) 的元素不可约是一回事。若在 \(\mathbb Z[x]\) 中可约,在 \(\mathbb Q[x]\) 中亦然;反之若 \(f\) 在 \(\mathbb Q[x]\) 中可以分解为 \(f=gh\),先乘以所有分母 lcm 化为 \(\mathbb Z[x]\) 中元素,得到形如 \(f'=g'h'\) 的分解,其中 \(f',g',h'\in\mathbb Z[x]\),且它们分别是 \(f,g,h\) 的整数倍。
接下来将 \(g',h'\) 都化为本原多项式,则 \(f'=c(g')c(h')g''h''\),由于 \(g'',h''\) 本原,则 \(g''h''\) 亦然;另一方面有 \(f'=c(f')f\),其中 \(f\) 本原,则必有 \(f=g''h''\)。这给出 \(f\) 的分解。
现在我们可以证明 \(\mathbb Z[x]\) 的唯一分解性了:首先对于 \(f\) 将其写为 \(c(f)f_0\),再将 \(f_0\) 放在 \(\mathbb Q[x]\) 中做唯一分解,注意总可以将分解出去的所有元素写为本原多项式。该分解的唯一性有 \(\mathbb Z\) 和 \(\mathbb Q[x]\) 的唯一分解性保证。
注意上述论证可以套用到任意唯一分解环 \(R\) 及其分式域 \(\text{Frac}(R)\) 上。
关于 \(\mathbb Z[x]\) 中元素的不可约性,还有两个有用的引理:
(Eisenstein)对于 \(f=a_nx^n+\cdots+a_1x+a_0\in\mathbb Z[x]\),若存在素数 \(p\),使得:
- \(p\mid a_0,p\mid a_1,\cdots,p\mid a_{n-1}\)
- \(p\nmid a_n\)
- \(p^2\nmid a_0\)
则 \(f\) 不可约。
证明:若 \(f\) 分解为 \(f=gh\),设 \(g=\sum_{i=0}^mb_ix^i,h=\sum_{i=0}^lc_ix^i\)
则由 \(p\mid a_0\Rightarrow p\mid b_0c_0,p\nmid a_n\Rightarrow p\nmid b_m,p\nmid c_l\);由于 \(p\) 是素数且 \(p\mid b_0c_0\),不妨设 \(p\mid b_0\),取最小的 \(k\ge 1\) 使得 \(p\nmid b_k\),则 \(a_k\equiv b_kc_0\pmod p\),则 \(p\mid b_kc_0\Rightarrow p\mid c_0\)。这表明 \(p^2\mid a_0\),矛盾!
另一个引理是,若整系数多项式 \(f=a_0+a_1x+\cdots+a_nx^n\) 有根 \(\frac{q}{p}\),且 \(\gcd(p,q)=1\),则 \(p\mid a_n\) 且 \(q\mid a_0\)。
证明:将 \(\alpha=\frac{q}{p}\) 带入 \(\sum a_ix^i=0\),再在等式两边同时乘 \(p^n\) 得
则 \(q\mid a_0p^n,p\mid a_nq^n\),结合 \(\gcd(p,q)=1\) 即得结论。
由此可得引理:首一整系数多项式的有理根总是整数。
- Kronecker 算法
可以对整系数多项式做因式分解,当然复杂度是指数级的,不过表现还不错!
写了一个代码,不过大概只能跑 \(\deg f\) 以及系数都比较小的情况?
目测次数 \(\le 10\),系数在 \(\pm 10\) 以内的多项式还是勉强能跑一下的

浙公网安备 33010602011771号