一次同余方程

一、一次同余式的概念

通常,我们把含有未知数的同余式叫做同余式方程

一类形式最简单的同余方程是一次同余方程,一般形式为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,故ak≡ 1(mod n),这就是大衍求一术的原理了

猜你喜欢

转载自www.cnblogs.com/lfri/p/9498268.html
今日推荐