众所周知,遇到
≥3 次的多项式要求因式分解时,我们通常都需要用猜根的方法。
首先我们设
f(x)=∑i=0naixi,其中
an=0。
若
a0=0 显然
0 是一个根,所以下面假设
a0=0。
下面考虑怎么求
f(x) 的一个整数根,设整数根为
x0。
对于任意整数
r 满足
f(r)=0,即不为
f(x) 的根,那么我们有
(x0−r)∣f(r)。
下面证明一下,因为
x0 是
f(x) 的整数根,所以存在整多项式
g(x) 满足
g(x)(x−x0)=f(x)。
代入即可得
f(r)=g(r)(r−x0)=−g(r)(x0−r),因为
g(r) 是整数且不为
0,所以
(x0−r)∣f(r)。
这时我们令
r=0,即可得到
x0∣a0,即整数解
x0 总是
a0 的因数。
只需要枚举
O(d(a0)) 个解即可。
现在我们已经会解决整数根了,现在考虑解决有理数。
现在设
x0 是
f(x) 的一个有理根(注意与上文的定义不同了)。
那么
f(x0)=0,展开一下就是
∑i=0naix0i=0。
我们考虑直接将两边模上
x0,即可得
a0≡0(mod x0),即
x0a0∈Z。
考虑直接换元,设
x0=ya0,y∈Z∗。
那么我们可以得到
∑i=0nai(yia0i)=0。
同乘
yn 得
∑i=0naia0iyn−i=0,然后就可以变成求整数根了,因为
y 是整数。
这时候我们可以拿到
y∣ana0n。
其实就是
有理根定理 的弱化版,但是这是在做数学作业的时候想出来的。
回机房搜到了有理根定理,发现关于
y 的结论可以再简化成
gcd(y,a0)y∣an。