一般高次同余式(组)的解法总结
设 f i ( x ) { {f}_{i}}\left( x \right) fi(x)是一般的高次整系数多项式, m i ∈ Z ≥ 1 { {m}_{i}}\in { {\mathbb{Z}}_{\ge 1}} mi∈Z≥1, i = 1 , 2 , ⋯ , k i=1,2,\cdots ,k i=1,2,⋯,k。欲求解同余式组
{ f 1 ( x ) ≡ 0 m o d m 1 ⋮ f k ( x ) ≡ 0 m o d m k \left\{ \begin{matrix} { {f}_{1}}\left( x \right)\equiv 0\text{ }\bmod { {m}_{1}} \\ \vdots \\ { {f}_{k}}\left( x \right)\equiv 0\text{ }\bmod { {m}_{k}} \\ \end{matrix} \right. ⎩⎪⎨⎪⎧f1(x)≡0 modm1⋮fk(x)≡0 modmk
解法总结如下。
步骤一
分别求解每一个 f i ( x ) ≡ 0 m o d m i , i = 1 , 2 , ⋯ , k {
{f}_{i}}\left( x \right)\equiv 0\text{ }\bmod {
{m}_{i}},\text{ }i=1,2,\cdots ,k fi(x)≡0 modmi, i=1,2,⋯,k。现选择其中的一个同余式 f ( x ) ≡ 0 m o d m f\left( x \right)\equiv 0\text{ }\bmod m f(x)≡0 modm
作为样例进行求解。
步骤二
对 m m m进行素因子分解得到
m = p 1 e 1 ⋯ p n e n m={
{p}_{1}}^{
{
{e}_{1}}}\cdots {
{p}_{n}}^{
{
{e}_{n}}} m=p1e1⋯pnen
于是将原同余式 f ( x ) ≡ 0 m o d m f\left( x \right)\equiv 0\text{ }\bmod m f(x)≡0 modm转化为等价的同余式组
{ f ( x ) ≡ 0 m o d p 1 e 1 ⋮ f ( x ) ≡ 0 m o d p n e n \left\{ \begin{matrix} f\left( x \right)\equiv 0\text{ }\bmod {
{p}_{1}}^{
{
{e}_{1}}} \\ \vdots \\ f\left( x \right)\equiv 0\text{ }\bmod {
{p}_{n}}^{
{
{e}_{n}}} \\ \end{matrix} \right. ⎩⎪⎨⎪⎧f(x)≡0 modp1e1⋮f(x)≡0 modpnen
(相关理论支撑参见博文《高次同余式的解数和解法》定理1)
然后分别求解里面的每一个同余式。现选择其中的一个同余式
f ( x ) = 0 m o d p e f\left( x \right)=0\text{ }\bmod {
{p}^{e}} f(x)=0 modpe
作为样例进行求解。
步骤三
若 deg f ( x ) ≥ p \deg f\left( x \right)\ge p degf(x)≥p,则利用多项式的带余除法对 f ( x ) f\left( x \right) f(x)进行降次
f ( x ) = ( x p − x ) q ( x ) + r ( x ) f\left( x \right)=\left( {
{x}^{p}}-x \right)q\left( x \right)+r\left( x \right) f(x)=(xp−x)q(x)+r(x)
得到等价的同余式 r ( x ) ≡ f ( x ) ≡ 0 m o d p r\left( x \right)\equiv f\left( x \right)\equiv 0\text{ }\bmod p r(x)≡f(x)≡0 modp。
(相关理论支撑和降次操作过程参见博文《素数模同余式次数与其解数的关系》定理2,定理1证明过程)
若 deg f ( x ) ≤ p − 1 \deg f\left( x \right)\le p-1 degf(x)≤p−1,则可直接令 r ( x ) = f ( x ) r\left( x \right)=f\left( x \right) r(x)=f(x)。
然后用穷举法求解 r ( x ) ≡ 0 m o d p r\left( x \right)\equiv 0\text{ }\bmod p r(x)≡0 modp(对特殊的 r ( x ) r\left( x \right) r(x),有更简便的方法)。
步骤四(最多共需要迭代使用 e − 1 e-1 e−1次)
通过迭代算法由 r ( x ) ≡ 0 m o d p r\left( x \right)\equiv 0\text{ }\bmod p