浅谈数论

引子

符号的规定

 

  1. xZ,yN+k,r满足x=ky+r(kZ,rNr<y),则我们规定 r=xmody,称为"x 取余 y"。
    显然,“取余”运算满足以下性质:

    • xmody=(x+y)mody

    • xmody=x(0x<y)

  2. x,yZ,mN+,若(xmodm)=(ymodm),则记为xy(modm),称为"x,y 同余 m" 显然“同余”运算满足以下性质:

    • xy(modm),则x+k×my+j×m(modm)  (k,jZ)

  3. x,yZ,令gcd(x,y)为 x,y 的最大公约数
    显然,gcd(x,y)满足以下性质:

    1. y0,gcd(x,y)={gcd(y,xmody),y0x,y=01

    2. x,y,gcd(x,y)=gcd(x,y)=gcd(x,y)=gcd(x,y)

  4. gcd(x,y)=1,则称x,y互质

  5. gcd(x,y)=x,则称xy的因数,yx的倍数,记为xy,反之,记为xy

引例

  • 一个正整数,除以三余二,除以五余二,除以七余三,问这个数最小是多少?


二元一次方程的整数解

定义&性质

对于形如ax+by=c(a,bN,cZ)的方程,称为二元一次整数方程

显然,有以下性质:

  1. gcd(a,b)c该方程x,y无整数解 2

  2. x0,y0为方程的一组解,则该方程有无数组解,为{x=x0+bty=y0at(tZ)3

step1:恒等变形

求解方程ax+by=c

若有整数解,不妨令a=agcd(a,b),b=bgcd(a,b),c=cgcd(a,b)
原方程变为ax+by=c,此时a,b ax+by=cax+by=c(a,b) (人话:约分)

step2:倍比变形

求解方程ax+by=c,(a,b互质)
注意到以下方程:
ax+by=1 将两边同时乘以b,得到
axc+byc=c 对比 ①②, 得到{x=xcy=yc 接下来只需要求解方程ax+by=1(a,b)即可

step3:递归求解-递

求解方程ax+by=1(a,b) a,b ax+by=1ax+by=gcd(a,b) a,b替换a,b ax+by=gcd(a,b) 不妨令a=b,b=amodb

以此类推,不断进行辗转相除

ax+by=gcd(a,b) ax+by=gcd(a,b) ... 根据gcd的性质,当深度(次数)足够深时,b...总会等于 0 此时a...x+0×y=a... 解得x=1,y任意整数,为了计算方便,令其为 0

step4:递归求解-归

我们知道了最后一层的x=1,y=0,但是因为我们拿a,b替换了a,b,所以上下两层的x,y关系尚未确定,但是我们令a=b,b=amodb了,所以能否通过它找出关联呢?(你猜如果没关系那我为什么要令:) )

接下来我们研究相邻两层中xn,x(n+1),yn,y(n+1)的关系: axn+byn=gcd(a,b) bx(n+1)+(amodb)y(n+1)=gcd(b,amodb) 根据gcd的性质,gcd(a,b)=gcd(b,amodb),有 axn+byn=bx(n+1)+(amodb)×y(n+1) axn+byn=bx(n+1)+(aab×b)×y(n+1) axn+byn=bx(n+1)+ay(n+1)abby(n+1) axn+byn=ay(n+1)+b[x(n+1)aby(n+1)]

step5:整理

只需要将 1、2、3、4 步骤结合即可得出答案

例:求解方程 56x+29y=4

56x1+29y1=1(x=4x1,y=4y1)29x2+27y2=127x3+2y3=12x4+y4=1x5=1x5=1,y5=0x4=y(4+1)=0,y4=(x(4+1)21×y(4+1))=1x3=y(3+1)=1,y3=(x(3+1)272×y(3+1))=13x2=y(2+1)=13,y2=(x(2+1)2927×y(2+1))=14x1=y(1+1)=14,y1=(x(1+1)5629×y(1+1))=27x=x1×4=56,y=y1×4=108

{x=56y=108是方程56x+29y=4的一组解

{x=56+29ty=10856t

代码实现

image-20250417210751198

线性同余方程

定义与性质

对于形如axb(modc)(a,bZ,cN+)的方程,称之为线性同余方程(求解最小非负整数 x)

显然,其等价于(amodc)x+cy=b(a,bZ,cN+)4,根据上一命题,可求出形如{x=x0+cty=y0atx,yZ的解

由于在线性同余方程中,y 的取值并不重要,得到x=x0+ct,而我们研究最小非负整数 x,x=x0modc

例:求解 方程5x70(mod25)

5X70(mod25)5X+25Y=70X+5Y=14x+5y=15x0+y0=1x1=1,y1=0x0=0,y0=1x=1,y=0X=14mod5=4

中国剩余定理(孙子定理)

定义

对于形如{xa1(modm1)xa2(modm2)xan(modmn)的方程组,称之为线性同余方程组

(m1,m2,,mk)互质时,我们可以使用中国剩余定理 (Chinese Remainder Theorem)进行求解。

核心思想(易得,这里不作证明)

x0=i=1nui,ui{ui0(modm1)ui0(modm2)uiai(modmi)ui0(modmn1)ui0(modmn)x=x0+ki=1nmi(kZ)

具体实现

M=i=1nmi,Mi=Mmi,1jnji,miMiuj0(modmj)Miviai(modmi)ui=Mivi

举例

求解{x2(mod3)x3(mod5)x2(mod7)

35u12(mod3)u1=121u23(mod5)u2=315u32(mod7)u3=2x0=35×1+21×3+15×2=128x=x0mod105=23

x=23

代码

image-20250417214705919


1 证明:当y=0时,xy的公因数就是x的因数,而最大公因数就是x本身,所以gcd(x,0)=x
y0时,设x=ky+rkZrNr<y),即r=xmody
dxy的公因数,即x=mdy=ndm,nZ),则r=xky=mdknd=(mkn)d,所以d也是yr(即xmody)的公因数。
反之,设dyxmody的公因数,即y=pdxmody=qdp,qZ),因为x=ky+(xmody)=kpd+qd=(kp+q)d,所以d也是xy的公因数。
这表明xy的公因数集合与yxmody的公因数集合相同,那么它们的最大公因数也相等,即gcd(x,y)=gcd(y,xmody)
2 证明:对于方程ax+by=c,假设x,yZ,因为gcd(a,c)ac的最大公因数,所以a=m×gcd(a,c)c=n×gcd(a,c)m,nZ)。则有mgcd(a,b)x+ngcd(a,b)y=c
gcd(a,b)(mx+ny)=c
mx+ny=cgcd(a,b)
m,nxyZ
mx+nyZ
此时若gcd(a,b)c,则m,nxyZ,与假设矛盾,故x,yZ
结论:若gcd(a,b)c该方程x,y无整数解
3 证明:若x0,y0是该方程的一组解,则有
ax0+by0=cax0+abtabt+by0=ca(x0+b×t)+b(y0a×t)=c{x=x0+bty=y0at
4 证明:根据同余的定义,axb(modc)意味着axb能被c整除,即存在整数y,使得axb=cy,移项可得ax+cy=b