初等数论初步——一次同余方程
一、一次同余式的概念
通常,我们把含有未知数的同余式叫做同余式方程。
一类形式最简单的同余方程是一次同余方程,一般形式为ax≡b(mod n),其中n为正整数,a,b为整数且a不为0.
二、一次同余方程的解的情况
1、是否有解
2、有多少解
3、有解的情况下如何描述解
1º 先讨论特殊情况,即(a,n) = 1的情形
(a,n) = 1 <==> 存在整数k,l,是的ak + nl = 1 <==> n | nl = 1 - ak <==> ak≡1(mod n)
因此,ax≡b(mod n) <==> ax≡b(ak) = a(bk)(mod n) <==> x≡kb(mod n)
因此,这个同余方程有且只有一个解x≡kb(mod n)
2º 再讨论(a,n) = d> 1的情形
若同余方程有解,不妨设x≡c(mod n),则ac≡b(mod n),从而n | ac - b
(a,n) = d <==> d | a,d | n <==> d | ac,又有n | ac - b <==>d | ac - b
从而d | ac - (ac - b) = 1,这表明上述的同余方程有解时,必有d | b.
那么当d | b时,同余方程是否一定有解呢?
记a = a’d,b= b’d,n = n’d,则(a’,n’)=1,注意到
ax≡b(mod n) <==> n | ax - b <==> n’d | (a’x - b’)d <==> n’ | (a’x - b’),于是同余方程可以化简为a’x≡b’(mod n) (*)
根据情况一,(a’,n’) = 1,同余方程(*)有唯一解x≡k’b’(mod n’)
此时x = k’b’ + n’l,l为任意整数对l,d用带余除法:l = dq + r,0≤r≤d-1,q为整数,于是
x = k’b’ + n’l = k’b’ + n’(dq + r) = k’b’ + nq + n’r,所以x≡k’b’ + n’r(mod n),r = 0,1,...,d-1
于是得出结论:
三、求解一种特殊的一次同余方程:大衍求一术
大衍求一术是求解同余方程ax≡1(mod n),其中a为正整数,a<n且(a,n)= 1的一种算法程序。
(1)算法步骤:
先规定k1=1,r1=a
对n、k用带余除法: n = r1q2+r2,记k2=-q2k1;
对a、r2用带余除法:a = r2q3+r3,记k3=k1-q3k2;
对r2、r3用带余除法:r2 = r3q4+r4,记k4=k2-q4k3;
对r3、r4用带余除法:r3 = r4q5+r5,记k5=k3-q5k4;
......
重复这种计算,知道余数rn=1,那么最后所得kn=kn-2 - qnkn-1满足akn≡1(mod n)
于是x≡kn(mod n)就是一次同余方程ax≡1(mod n)的解
(2)算法原理
r1=a = ak1(mod n)
r2=n - r1q2≡a(- q2k1) = ak2(mod n)
r3=r1 - r2q3≡a(k1 - q3k2) = ak3(mod n)
r4=r2 - r3q4≡a(k2 - q4k3) = ak4(mod n)
......
而r1 = 1,故akn ≡ 1(mod n),这就是大衍求一术的原理了