3 同余方程
3 同余方程
3.1 一次同余方程
定义3-1:设a,b是整数且\(a\not\equiv0(mod\;m)\),则称\(ax\equiv b(mod\;m)\)为一次同余方程。
如果\(ax_0\equiv b(mod\;m)\),那么\(x_0+km\)都能够使得同余方程成立,存在无穷多个整数解。但我们在求解同余方程的时候,通常将解写成\(x\equiv x_0(mod\;m)\)的形式,因此同余方程的解实际上指的是关于模m互不同余的所有解,所以一次同余方程的解数不超过m。
定理3-1:设\(a,b\)是整数且\(a\not\equiv0\mod m\),\(ax+b\equiv0\mod m\)有解等价于\(d|b\),其中\(d=(a,m)\)。
证明:
- 因为同余方程有解:\(ax+b\equiv0\mod m\Leftrightarrow m|(ax+b)\),并且\(d|m,d|a\),所以\(d|(ax+b)\Rightarrow d|b\)。
- 若\(d|b\),那么存在整数\(k\)使得\(b=kd\)。又因为存在整数\(s,t\),使得\(as+mt=d\),因此\(aks+mkt=kd=b\)。于是我们可以得到\(a(-ks)+b\equiv0(mod\;m)\),因此\(x\equiv-ks(mod\;m)\),有解。
定理3-2:若\(ax+b\equiv0\mod m\),\(d=(a,m),d|b\),那么同余方程在模m意义下有d个不同的解。并且如果\(x_0\)是方程
的一个特解,则原方程的全部解为:
证明:
-
当\(d=1\)时,由于\((a,m)=1\),所以存在整数\(s,t\)使得
\[\begin{aligned} &as+mt=1 \Leftrightarrow\;&as\equiv1\mod{m} \end{aligned} \]上述式子实际上意味着\((s,m)=1\)也是成立的,因此
\[\begin{aligned} &ax+b\equiv0\mod{m}\\ \Leftrightarrow\;&ax\equiv-b\mod{m}\\ \Leftrightarrow\;&sax\equiv-sb\mod{m}\\ \Leftrightarrow\;&x\equiv-sb\mod{m} \end{aligned} \]上述推导都是等价的,加上逆元的唯一性,因此,此时同余方程只有唯一解。
-
当\(d>1\)时
\[\begin{aligned} &ax+b\equiv0\mod{m}\\ \Leftrightarrow\;&ax+b=km\\ \Leftrightarrow\;&\frac{a}{d}x+\frac{b}d=k\frac{m}d\\ \Leftrightarrow\;&\frac{a}{d}x+\frac{b}d\equiv0\mod{\frac{m}d} \end{aligned} \]上述推导说明,\(ax+b\equiv0(mod\;m)\)的所有解都是\(\frac{a}{d}x+\frac{b}d\equiv0(mod\;{\frac{m}d})\)的解,反之亦成立。
并且\(\frac{a}{d}x+\frac{b}d\equiv0(mod\;{\frac{m}d})\)具有唯一解(假设为\(x_0\)),这个解可以写成以下形式
\[X=\{x_0+k\frac{m}d,\;k\in Z\} \]原同余方程的所有解都蕴含在上述解集中,我们需要做的就是找到所有在模m下不同的解即可。在此之前,我们先考虑解集\(X\)中的两个解如果模m同余会有什么结果
\[\begin{aligned} &x_0+k\frac{m}d\equiv x_0+k'\frac{m}d\mod{m}\\ \Leftrightarrow\;&m|\frac{m}d(k-k')\\ \Leftrightarrow\;&\frac{m}{d}d|\frac{m}d(k-k')\\ \Leftrightarrow\;&d|(k-k')\\ \Leftrightarrow\;&k\equiv k'\mod{d} \end{aligned} \]因此如果解集\(X\)中的两个解模\(m\)同余说明系数\(k\)模\(d\)同余,而任意整数模d一共只有d种不同的结果,因此原同余方程一共有d个不同的解。
一次同余方程的一种解法:若\((a,m)=1\),则同余方程\(ax\equiv b(mod\;m)\)的解为\(x\equiv ba^{\varphi(m)-1}(mod\;m)\)。这种解法就是欧拉定理的直接应用,应用\(a^{\varphi(m)}\equiv1(mod\;m)\)即可。
3.2 中国剩余定理
设\(m_1,m_2,\cdots,m_r\)是两两互素的自然数,令\(m=m_1m_2\cdots m_r\),\(M_i=m/m_i\),其中\(i=1,2,\cdots,r\)。则方程组
的解为\(x\equiv M_1'M_1b_1+M_2'M_2b_2+\cdots+M_r'M_rb_r(mod\;m)\),其中\(M_i'\)满足\(M_i'M_i\equiv1(mod\;m_i)\)。且该方程在模\(m\)意义下,仅有一个非负整数解。
证明:
很容易验证,对于\(1\le i \le r\),都有
因为\(M_i'M_i\equiv1(mod\;m_i)\),并且\(m_i|M_j(j\ne i)\)。因此\(x\)是原方程组的一个解。
接着我们证明解的唯一性:假设在模\(m\)意义下有两个不同的解\(x,y(x<y)\),那么
因为\(m_1,m_2,\cdots,m_r\)两两互素,所以\(m|(y-x)\)。
又因为\(0\le x\lt y\lt m\),所以\(0\le|x-y|<m\),故\(x-y=0\),即解唯一。
中国剩余定理的实际应用:
在实际解题过程中,一个同余方程组的模数往往不可能恰好两两互素,因此需要事先对方程组进行等价变换。同余具有下列两个基本性质(可参见2.1同余的性质):
-
若\((m_1,m_2)=1\),\(x\equiv a(mod\;m_1)\),\(x\equiv a(mod\;m_2)\)等价于\(x\equiv a(mod\;m_1m_2)\)。
-
若\(m_1|m_2\),则\(x\equiv a(mod\;m_1)\),\(x\equiv a(mod\;m_2)\)等价于\(x\equiv a(mod\;m_2)\)。
因此,利用上述两个性质,可以对原方程组的某些方程进行“分解”或者“合并”。
例题:
首先,对原方程组中的方程进行分解,然后进行合并:
最后运用中国剩余定理即可。
3.3 高次同余方程
这部分的多项式\(f(x)\)次数均默认大于等于2
定义3-2:设\(f(x)=a_nx^n+\cdots+a_1x+a_0\)为整系数多项式,且\(m\nmid a_n\),则同余方程\(f(x)\equiv0(mod\;m)\)称为n次模m同余方程。
容易验证,若\(x_0\)是\(f(x)\equiv0(mod\;m)\)的解,则任意与\(x_0\)同余的数都是同余方程的解。我们将这些两两同余的解同一记为\(x\equiv x_0(mod\;m)\)。
高次同余方程的解数非常不规则,例如:
- \(x^2+1\equiv0(mod\;3)\),无解
- \(x^3-x\equiv0(mod\;6)\),有6个解(0,1,2,3,4,5)
引理1:设\(m_1,m_2\)为整数,\((m_1,m_2)=1\)则同余方程\(f(x)\equiv0(mod\;m_1m_2)\)同解于方程组
证明:利用2.1部分中的同余的性质4,7即可。
引理2:设\(x\equiv x_1,x_2,\cdots,x_k(mod\;m_1)\)是\(f(x)\equiv0(mod\;m_1)\)的解,\(x\equiv y_1,y_2,\cdots,y_l(mod\;m_2)\)是\(f(x)\equiv0(mod\;m_2)\)的解,则方程组
可以转换求解\(kl\)个同余式组
证明:
-
\(x\)若是原方程组的解,那么\(x(mod\;m_1)\in\{x_1,x_2,\cdots,x_k\}\),并且\(x(mod\;m_2)\in\{y_1,y_2,\cdots,y_l\}\)。因此进行两两配对就可得到了\(kl\)个同余式组。
-
若\(x\)是其中一个同余式组的解,即
\[\left\{\begin{aligned} x\equiv x_i\mod m_1\\ x\equiv y_j\mod m_2 \end{aligned}\right. \]那么\(f(x)\equiv f(x_i)\equiv0(mod\;m_1)\),\(f(x)\equiv f(y_j)\equiv0(mod\;m_2)\),所以\(x\)也会是原方程组的一个解。因此,求解\(kl\)个同余式组就可以知道原方程组的所有解。
综上可知,引理2成立。
定理3-3:设\(m_1,m_2\)为整数,\((m_1,m_2)=1\),则同余方程\(f(x)\equiv0(mod\;{m_1m_2})\)解的个数为方程\(f(x)\equiv0(mod\;{m_1})\)和\(f(x)\equiv0(mod\;{m_2})\)的解数之积。
证明:
首先,根据引理1,\(f(x)\equiv0(mod\;{m_1m_2})\)同解于方程组
设\(x\equiv x_1,x_2,\cdots,x_s(mod\;{m_1})\)是\(f(x)\equiv0(mod\;{m_1})\)的解,\(x\equiv y_1,y_2,\cdots,y_t(mod\;{m_2})\)是\(f(x)\equiv0(mod\;{m_2})\)的解,根据引理2,求解该方程组等价于求解\(st\)个同余式组。
因为\((m_1,m_2)=1\),根据中国剩余定理,每一个同余式组在模\(m_1m_2\)意义下都有唯一解。因此,原方程组有\(st\)个解。
上述引理1,2和定理3-3都可以推广到方程数目更多的情况。
为了求解一般的同余方程\(f(x)\equiv0(mod\;{m})\),利用上述引理1和算数基本定理,我们有
我们将\(f(x)\equiv0(mod\;{p_i^{\alpha_i}})\)的解数记为\(\gamma_i\),于是根据推广的引理2,我们只需求解\(\gamma_1\gamma_2\cdots\gamma_k\)个同余式组即可,然后根据中国剩余定理,这些同余式组在模m意义下都有唯一解,因此原同余方程有\(\gamma_1\gamma_2\cdots\gamma_k\)个解(定理3-3的推广)。
综上可知,如果我们能够求解\(f(x)\equiv0(mod\;{p^{l+1}})\)形式的同余方程(p是素数),理论上我们就能够求解任意同余方程,因此,下面我们将探讨其解法。
求解思路:因为当对于\(l\)比较大的时候,求解方程也不太容易,这时我们利用同余的性质,将原方程转化为
此时如果我们找到了模\(p^l\)的一个解\(x_0(mod\;p^l)\),那么我们可以尝试在\(x_0+p^lt\;(t\in Z)\)中寻找模\(p^{l+1}\)的解,通过二项式展开,可以得到
又因为
所以
因为p是素数,如果\(p|f'(x_0)\),那么\(p^{l+1}|f'(x_0)p^l\),所以\(f(x_0+p^lt)\equiv f(x_0)(mod\;{p^{l+1}})\)。
如果\(f(x_0)\equiv0\mod{p^{l+1}}\),那么此时\(x_0(mod\;p^l)\)就是所要求的一个解。如果\(f(x_0)\not\equiv0\mod{p^{l+1}}\),那么\(x_0+p^lt\)均不是原方程的解。此时就需要重新找一个新的解(模\(p^l\)意义下),重新进行尝试。
如果\((p,f'(x_0))=1\),令\(f(x_0+p^lt)\equiv0\mod{p^{l+1}}\),则
因为\(f(x_0)\equiv0(mod\;{p^l})\),所以\(p^l|f(x_0)\)。此时我们可以求解出\(t\),设\(0\le t_0<p\)是模p下唯一的解,那么t的所有解为:
于是我们有
因此\(x_0(mod\;p^l)\)唯一对应着\(x_0+p^lt_0(mod\;p^{l+1})\)。
综上可知:如果\(x_0(mod\;p^l)\)是方程\(f(x)\equiv0(mod\;p^l)\)的一个解
- 如果\(p|f'(x_0)\)且\(f(x_0)\equiv0(mod\;p^{l+1})\),此时\(x_0+p^lt\)均是所要求的解。
- 如果\(p|f'(x_0)\)且\(f(x_0)\not\equiv0(mod\;{p^{l+1}})\),此时\(x_0+p^lt\)均不是所要求的解。
- 如果\((p,f'(x_0))=1\),那么可以通过\(x_0+p^lt\)唯一确定原方程的一个解。
因为\(f(x)\equiv0(mod\;p^l)\)有解是\(f(x)\equiv0(mod\;{p^{l+1}})\)有解的必要条件,因此通过尝试\(f(x)\equiv0(mod\;p^l)\)所有可能的解,就一定能找全所有解。
定理3-4:设\(f(x)\equiv0,f'(x)\equiv0(mod\;p)\)无公共解,则\(f(x)\equiv0(mod\;p^l)\)解的个数等于\(f(x)\equiv0(mod\;p)\)解的个数。
证明:
-
显然对于\(l=1\)的时候成立。
-
假设对于\(l=k\)的时候成立,设\(x_0\)是\(f(x)\equiv0(mod\;p^k)\)的一个解,所以\(f(x)\equiv0(mod\;p)\),由条件可知\(f'(x_0)\not\equiv0(mod\;p)\)。这意味着\((p,f'(x_0))=1\),因为\(p\)是素数。根据我们之前推导的方法,一定可以通过\(x_0+p^kt\)唯一确定方程\(f(x)\equiv0(mod\;p^{k+1})\)的一个解,这对于\(f(x)\equiv0(mod\;p^k)\)的任意一个解都是如此。因为\(f(x)\equiv0(mod\;p^l)\)有解是\(f(x)\equiv0(mod\;{p^{l+1}})\)有解的必要条件,因此通过尝试\(f(x)\equiv0(mod\;p^l)\)所有可能的解,就一定能找全所有解。
因此,方程\(f(x)\equiv0(mod\;p^{k+1})\)解的个数等于方程\(f(x)\equiv0(mod\;p^k)\)解的个数。即对于\(l=k+1\)结论也成立。
小结:通过上述的讨论我们把求解\(f(x)\equiv0(mod\;p^{l+1})\)归结为求解\(f(x)\equiv0(mod\;p^{l})\)的问题,通过\(l\)次转化之后,相当于我们只需要求解\(f(x)\equiv0(mod\;p)\)即可。
定理3-5:设\(p\)为素数,\(f(x)=a_nx^n+\cdots+a_1x+a_0\)是整系数多项式,且\(p\not\mid a_n\),则方程
解的个数不超过n(重根按照重数计算)。
证明:如果\(f(a_1)\equiv 0(mod\;p)\),说明原方程有一个\(x\equiv a_1(mod\;p)\)根,那么原方程可以进行因式分解
同理如果\(f_1(a_2)\equiv0(mod\;p)\),那么就可以继续分解为
最终可以分解为
其中\(f_r(x)\not\equiv0(mod\;p)\)恒成立。
因为多项式\(f(x)\)的次数不超过\(n\),所以其解的个数也不会超过\(n\)。
现在考虑一类特殊的同余方程:\(x^{p-1}\equiv1(mod\;p)\),\(p\)为素数。显然0不是该方程的解,对于任意\(0\le x \le p-1\),都有\((x,p)=1\),根据欧拉定理有\(x^{p-1}\equiv1(mod\;p)\)均成立,即该方程的所有可能解为
即一共有\(p-1\)个解,此时在模\(p\)意义下,我们可以进行因式分解
令\(x=0\),可以得到
因为\(p\)是素数,可以验证当\(p=2\)或\(p>2\)的时候,上述式子可以化简为
上述结果称为Wilson定理。
降低方程次数: 如果我们不关心方程根的重数,利用费马小定理,我们总可以将方程的次数降低到不超过\(p-1\)次,这是因为
下面介绍两种降低方程次数的方法:
-
利用带余除法:计算
\[f(x)=q(x)(x^p-x)+r(x) \]然后求解\(r(x)\equiv0(mod\;p)\)即可
-
直接用\(x\)替换\(x^p\)即可,直到\(f(x)\)中不含高于\(x^{p-1}\)的项。