一、一次同余式的概念
通常,我們把含有未知數的同余式叫做同余式方程。
一類形式最簡單的同余方程是一次同余方程,一般形式為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),這就是大衍求一術的原理了