附录2 - 求最大公约式
一、最大公约式的定义
两个多项式 f(x),g(x) 的最大公约式 gcd(f(x),g(x)) 的严格定义是:
- 是公约式
- 能被任何公约式整除(即最大)
二、求两个多项式最大公约式的辗转相除算法(欧几里得算法):
要求 f(x) 和 g(x) 的最大公约式,不妨设
r−1=f(x), r0=g(x)。
连续使用带余除法:
r−1=q1r0+r1(deg(r1)<deg(r0))
r0=q2r1+r2(deg(r2)<deg(r1))
⋮
rk−2=qkrk−1+rk(deg(rk)<deg(rk−1))
rk−1=qk+1rk+0
因为余式的次数不断严格递减,且次数是非负整数,该过程必定在有限步内终止(余式为 0)。最后一个非零余式 rk(x) 即为最大公约式(通常最后乘以一个常数使其首项系数为 1,但本质是同一个多项式)。
三、证明 rk(x) 是最大公约式:
我们需要证明两点:
(1) rk 是 f 和 g 的公约式;
(2) f 和 g 的任何公约式都能整除 rk。
证明 rk 是公约式(自下而上):
从倒数第一个等式 rk−1=qk+1rk 可以看出, rk∣rk−1。代入倒数第二个等式
rk−2=qkrk−1+rk,因为 rk∣rk−1 且 rk∣rk,所以 rk∣rk−2。
以此类推,逐步向上倒推,最终可以得到
rk∣r0(即 g(x))以及 rk∣r−1(即 f(x))。
所以 rk(x) 是公约式。
证明任何公约式都整除 rk(自上而下):
设 d(x) 是 f(x) 和 g(x) 的任意一个公约式,即 d∣r−1 且 d∣r0。
由第一个等式 r1=r−1−q1r0,因为 d 整除右边的两项,所以
d∣r1。
由第二个等式 r2=r0−q2r1,因为 d∣r0 且 d∣r1,所以
d∣r2。
以此类推,逐步向下推导,最终必然得到
d∣rk。
结论: rk(x) 满足最大公约式的定义。