多项式除法的C语言实现

问题的引出

在该博客中我将着手解决这样一个问题,在求解模素数 p p p的同余式:
f ( x ) = a n x n + ⋯ + a 1 x + a 0 ≡ 0 ( m o d p ) f(x)=a_nx^n+\cdots+a_1x+a_0\equiv0\left(modp\right) f(x)=anxn++a1x+a00(modp)
时,其中 a n a_n an恒不为零. 通常需要借助费马小定理和多项式的欧几里得除法将上述一个复杂的问题转化为一个次数更低的模素数同余式。

具体来说,由费马小定理可知,多项式 x p − x ( m o d p ) x^p-x\left(modp\right) xpx(modp)对任何整数取值为零.进一步,利用多项式欧几里得除法可知存在整系数多项式 q ( x ) q(x) q(x), r ( x ) r(x) r(x)使得:
f ( x ) = q ( x ) ( x p − x ) + r ( x ) , d e g ( r ( x ) ) < d e g ( g ( x ) ) . f(x)=q(x)(x^p-x)+r(x), deg(r(x))<deg (g(x)). f(x)=q(x)(xpx)+r(x),deg(r(x))<deg(g(x)).
从而容易将上述同余式:
f ( x ) = a n x n + ⋯ + a 1 x + a 0 ≡ 0 ( m o d p ) f(x)=a_nx^n+\cdots+a_1x+a_0\equiv0\left(modp\right) f(x)=anxn++a1x+a00(modp)
降次为同余式:
r ( x ) ≡ 0 ( m o d p ) r(x)\equiv0\left(modp\right) r(x)0(modp)
不难证明上述两个模 p p p同余式等价.这时我便将初始的问题转化为一个次数更低的模 p p p同余式,进而方便原复杂问题的进一步求解。在这个化简过程中,起到核心作用的便是多项式的欧几里得除法,所以为了最终成功编程实现模素数 p p p任意次同余式的求解,我需要首先编程实现整系数的多项式欧几里得除法.

多项式欧几里得除法

引理(多项式欧几里得除法):

f ( x ) = a n x n + ⋯ + a 1 x + a 0 f(x)=a_nx^n+\cdots+a_1x+a_0 f(x)=anxn++a1x+a0
n n n次整系数多项式,
g ( x ) = x n + ⋯ + b 1 x + b 0 g(x)=x^n+\cdots+b_1x+b_0 g(x)=xn++b1x+b0
m ≥ 1 m\ge1 m1次首一整系数多项式,则存在整系数多项式 q ( x ) q(x)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值