【初等数论】 04 - 同余方程

1. 同余方程

  剩余类可以看做是一个新的数系,它对加减乘运算是封闭的,所以同余方程对多项式是有意义的。本节我们就来讨论一元多项式方程(1)的解,当然它的解是一个剩余类集合,最多有m个解。

(1)f(x)=k=0nakxk=anxn++a1x+a00(modm)

  在正式解一个同余方程前,可以先进行一些简单的变形,最简单的就是将系数取模。对于两个多项式f(x),g(x),如果它们的系数是模m同余的,则称f(x),g(x)是模m同余的。显然模同余的多项式的解也必然是相同的,一般将化简后多项式的次数称为方程的次数。同余方程中也不是完全不能用除法,当(an,m)=1时,多项式乘上an1就可以变成首1多项式。

  进一步,如果f(x)g(x)(modm)恒成立,则称f(x),g(x)是模m等价的。比如根据费马小定理,f(x)=xpg(x)=x就是等价的。显然同余的多项式必定是等价的,但等价的多项式却不一定是同余的。使用等价多项式可以对方程进行降次,比如模为p的多项式f(x)一定可以通过多项式除法f(x)=g(x)(xpx)+r(x)降为次数小于p的多项式r(x)。对于一般的合数m,其实容易有amamφ(m)(modm),则有恒等式xmxmφ(m)0(modm),故任何多项式都等价于某个次数小于m的多项式。

  接下来自然是要对模数进行分解,记方程(1)的解的个数为T(m,f),且m=m1m2mnmk两两互素。容易证明解方程(1)的问题可以等价为解方程组(2)的问题,且有T(m,f)=T(m1,f)T(m2,f)T(mn,f)

(2)f(x)0(modm){f(x)0(modm1)f(x)0(modmn)

  将模数进行素数分解,则我们可以把问题集中在解方程f(x)0(modpe),我们来考虑对模“降次”。首先显然该方程的解也必然是f(x)0(modpe1)的解,设c为后者的解,则前者的解必定在c+pe1y,(0yp1)中。将其带入原方程,注意去除含有(pe1y)k,(k2)的项(被整除),整理后得到f(c)+f(c)pe1y0(modpe),进而有式子(3)。由此当pf(c)时,y有唯一解。否则当p|f(c)p1r时恒成立,否则无解。这样就有了如公式(4)的方程的解的网状关系图,特别地当f(x)0(modp)无解时,所有f(x)0(modpe)的解相同。

(3)f(c)yf(c)p1e(modp)

(4)f(c)0(modp){pf(c)f(c)0(modpe)p2f(c)f(x)0(modp2),x=c+pyp2f(c)f(c)0(modpe)

  现在我们的问题被转化成了方程f(x)0(modp),研究的方向和一般多项式方程类似,是关于方程解的个数和多项式格式。先假设方程已经做了同余简化,但还未做等价简化,使用多项式除法和归纳法可以有以下拉格朗日定理:若方程有m个不同的解x1,x2,,xm,则必定有唯一表达式(5),其中g(x)的首项为anxnmr(x)的次数低于m。该定理说明了n次同余方程的解的个数不可能大于n,反之若大于n,则必恒为0

(5)f(x)=g(x)(xx1)(xx2)(xxm)+pr(x)g(x)(xx1)(xx2)(xxm)(modp)

  拉格朗日定理给出了多项式同余方程与根有关的格式,值得注意的是,该格式与原多项式是同余,也就是它的本来面貌,这点很重要。该定理还有其它有趣的应用,比如由欧拉定理知xp110(modp)p1个非零解,则有公式(6),令x=0即可得到威尔逊定理!如果再比较xxp2项的系数,就会有公式(7)(8)。还有值得一提的是,同余方程同可以有“重根”的概念,有兴趣你可以自己研究一下。

(6)xp11(x1)(x2)(xp+1)(modp)

(7)1ijp1ij0(modp)

(8)(p1)!k=1p11k0(modp)

  接下来我们假定方程做了等价简化,即f(x)的次数小于p且首项系数为1,看看会有什么性质。首先若有f(x)g(x)(modp),则f(x)g(x)p个根,从而f(x)=g(x),换句话说,次数小于p的首1多项式如果等价则必唯一,即等价和同余是一致的。还有一个问题就是方程的根的个数问题了,当f(x)恰有n个根时,有f(x)(xx1)(xxn)(modp),而xpx=x(x1)(xp+1)(modp),这就有xpxf(x)g(x)(modp)。反之也可以推得f(x),g(x)分别有n,pn个根。这就是说f(x)n个解的充要条件是存在唯一表达式(9)。

(9)xpx=f(x)g(x)+pr(x)

  关于高次方程更进一步的结论比较少,这里也不作深究,而二项同余方程xna(modp)放到下一篇会更简单,所以这里也不讨论了。对一些低次方程,可以直接对其研究,我们先从最简单的一次剩余方程axb(modm)看起,显然它是否有解与不定方程ax+my=b是否有解是等价的,故有解的充要条件是(a,m)b。由同余的性质,原方程等价于方程(10)。故原方程共有(a,m)个解,分别为x0+m(a,m)k,(k=0,,(a,m)1),其中x0为任一解,也称为特解。如果将(10)简记为a0xb0(modm0),则a01b0即为原方程的一个特解。

(10)a(a,m)xb(a,m)(modm(a,m))

  直接求逆是复杂的,一次方程一般用辗转相除法,对于一些特殊格式,你还可以动用一切同余的性质简化算法。尝试解决以下问题:

   证明2exb(modm)的解为(m+12)eb,其中(2,m)=1。并由此给出系数为2i3j的方程的解法;

   (a,m)=1,若ax1(modm)解为x0,则1(1ax0)eaax1(modme)的解。

2. 二次剩余

  现在来研究模为素数的二次同余方程ax2+bx+c(modp),通过配方可以有(2ax+b)2b24ac(modp),从而方程其实等价于二次二项方程x2d(modp),当然这里不去考虑p=2p|d这样的平凡场景。如果方程有解,d称为p二次剩余,否则叫二次非剩余。为方便描述,这里先引进勒让德(Legendre)符号(dp)dp的二次剩余时其值为1,否则为1p|d时值为0

  考虑将p的既约剩余系分为对称的两部分p12,,2,11,2,,p12,显然(x)2=x2,而当1i<jp12时,i2j2=(i+j)(ij)0(modp),所以i2j2(modp)。综合以上分析可知,p共有p12个二次剩余,p12个二次非剩余,每个二次剩余有两个互为相反数的根。

  我们自然要问:哪些数是二次剩余?如何判断它是二次剩余?根据欧拉定理有dp11(modp),容易证明dp12±1(modp)。若d为二次剩余,则有dp12(x)p11(modp)。若不为二次剩余,我们可以将1,2,,p1按照乘积为d配成p12对,根据威尔逊定理有dp121(modp)。综合这两个结论就是二次剩余的欧拉判别法(公式(11)),当然对于大模数这个方法的计算量还是太大,它仅有理论价值。

(11)(dp)=±1dp12(modp)

  对于一些特殊值,可以单独讨论,得出的结论也是可以直接使用的。首先容易证明1只有在p=4k+1时才是二次剩余,并且由威尔逊定理知(p12)!是它的解。而且当p=4k+1时,显然x,x同时是或不是二次剩余,呈对称分布。当(p=4k+3\)时,显然x,x有且仅有一个二次剩余,这些结构都是很有用的。再来看几个习题:

   讨论x2+ay20(modp),(x,y)=1有解的充要条件,并给出求解的方法;

   求模p下所有二次剩余的积与和,再求模p下所有二次非剩余的积与和。

  使用勒让德符号能更清晰地表述二次剩余的性质,以下性质比较简单,请自行证明:

  (1)(d+kpp)=(dp)

  (2)(d1d2p)=(d1p)(d1p)

  (3)(d2p)=1(1p)=1(1p)=(1)p12

  使用素数分解并结合以上性质,可将求一般(dp)的问题转化为求解(2p)(qp)上。现在从另一方面讨论dp12,在剩余系1,2,,p1中考察p12个数d,2d,,p12d的分布。容易证明它们互不相同且互不相反,所以它们是以p2为对称轴的两个数之一,右半边的数(设个数为n)需要取相反数才能回到左边。考虑它们的积则容易有dp12(1)n(modp),这样就有了二次剩余新的判定方法(公式(12)左),特别地时可以推得d=2是二次剩余的条件是p=8k±1(可写成公式(12)右,等价性自证)。

(12)(dp)=(1)n,(2p)=(1)p218

  对一般的d继续上面的结论,注意到dk=p[dkp]+rk[x]是取整操作),对它们求和并在模2下讨论,可以得到式子(13)。而后者有显著的几何意义,它是一个直角三角形区域内的整点个数。考虑(qp)对应的OAB(pq)对应的OAC,它们正好组成了一个长方形区域,这样就得到了著名的高斯二次互反律(公式(14))。
(13)nk=1p12[dkp](mod2)

(14)(qp)(pq)=(1)(p1)(q1)4

  有了这个公式,就可以将(qp)不断转化为更小模数的判定式,从而最终解决了任意(dp)的求解。请思考以下问题:

   求以3为二次剩余的充要条件,并由此对10023进行因式分解;

   求证x4+1的奇素因子都有格式8k+1;并由此证明格式为8k+1的素数有无穷多个;

   p=4k+3,求证2p+1为素数的充要条件是2p1(mod2p+1)

   pa,求x=1p(x2+axp)(提示:剩余系的遍历)。

  在使用勒让德符号时要保证模数是素数,这一点很不方便,我们希望这种记法能更通用一点。扩展后的符号称为雅克比(Jacobi)符号(dP)=k=1n(dpk),其中P=p1p2pn。雅克比符号虽然只是一个记法,但形式上却同样有着漂亮的性质,首先有下面几个简单的性质:

  (1)(d+kPP)=(dP)

  (2)(d1d2P)=(d1P)(d1P)(dP1P2)=(dP1)(dP2)

  (3)(d2P)=(dP2)=1

  在得到更多结论之前,需要一个引理:如果a=ak,ak1(modm),(k=1,2,,n),则用归纳法可以有公式(15)。

(15)a1mk=1nak1m(modm)

  利用这个结论就很容易得到雅克比符号的以下性质,这些性质可以使得雅克比公式的使用更加自由,中间无需关心操作数是否为素数,比如(105317)=(2105)=1

  (4)(1P)=(1)P12(2P)=(1)P218

  (5)(QP)(PQ)=(1)(P1)(Q1)4

posted on   卞爱华  阅读(4813)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

点击右上角即可分享
微信分享提示