浅谈同余方程的求解与中国剩余定理

浅谈同余方程的求解与中国剩余定理

本篇随笔简单讲解一下信息学奥林匹克竞赛中数论部分的内容——同余方程的求解。顺便讲一下中国剩余定理。

同余方程的概念

关于同余和同余式的基本概念,如果还是了解的不清楚的话,请翻看本蒟蒻的这篇博客,讲解的非常详细:

浅谈欧拉定理和乘法逆元

那么,同余方程就是同余式里加了一个需要我们求解的未知数。

比如,一种同余方程(就是我们首先要讲的一次同余方程)长成这个样子:
\[ ax\equiv b\,\,\,(mod\,\,p) \]

线性同余方程及其求解

未知数指数为1的同余方程叫做线性同余方程,它的通式可以被表示为:
\[ ax\equiv b\,\,\,(mod\,\,p) \]
我们可以用扩展GCD求解线性同余方程。

如果对于扩展GCD还不太明白的小伙伴,请移步本蒟蒻的这篇博客,讲解的也比较清晰:

浅谈扩展GCD

那么,我们知道扩展GCD可以被用来求解形如\(ax+by=m(gcd(a,b)|m)\)这样的方程。我们只需要把这个同余方程式变成这样的普通等式即可。

因为\(ax\equiv b\,\,\,(mod\,\,p)\)等价于\(ax-b\)可以被\(p\)整除,那么可以设\(ax-b\)\(p\)\(-y\)倍,那么就有:
\[ (ax-b)\times(-y)=p \]
经过移项变形,得到:
\[ ax+py=b \]
那么我们就可以通过扩展GCD来求一组特解\(x,y\),其中的\(x\)就是我们需要的答案。

注意,根据裴蜀定理,这个同余方程有解的条件应该是\(b\)\(\gcd(a,p)\)的倍数。

同余方程组与中国剩余定理

中国剩余定理相信大家都听说过,也叫做孙子定理,是我国古代数学的结晶之一(这个玩意真的是纯国产)(推销一下爱国情怀)。

中国剩余定理是用来求解:一次同余方程组的。

为了更好地理解中国剩余定理,我们来看一波历史:

从前有一本叫《孙子算经》的书,里面提到了一道这样的问题:

有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

大意: 一个整数除以三余二,除以五余三,除以七余二,求这个整数。

那么这个问题可以被抽象为一个同余方程组:
\[ \begin{equation} \left\{ \begin{array}{**lr**} x\equiv2\,\,\,(mod\,\,3)& \\ x\equiv3\,\,\,(mod\,\,5) & \\ x\equiv2\,\,\,(mod\,\,7) & \end{array} \right. \end{equation} \]
那么,将它扩展一下,我们可以有很多个方程,都形如\(x\equiv a_i\,\,\,(mod\,\,m_i)\)。将其构造成一个方程组,就会有一个线性同余方程组(当我没说)。

假设一个数\(M=\prod^n_{i=1}m_i\),那么设\(M_i=M/m_i\),即\(M_i\)表示所有模数中除了第\(i\)个模数的乘积。设\(t_i\)\(M_i\)\(m_i\)意义下的逆元。那么中国剩余定理就是:

上述方程式有解,其通解为:
\[ x=\sum^n_{i=1}{a_it_iM_i} \]

猜你喜欢

转载自www.cnblogs.com/fusiwei/p/12061643.html
今日推荐