【數論】不定方程&逆元&中國剩餘定理

1、不定方程

 

要求逆元,首先要知道什麼是不定方程。html

已知a,b,c,求解x,y,形如ax + by = c 的方程就是不定方程。spa

不定方程有兩種解的狀況:htm

1.無解blog

2.存在且有無限的解get

那麼,如何判斷解的狀況呢?it

這時候,只須要拿出gcd就能夠了,class

若gcd(a,b) | c,則方程存在解,爲何呢擴展

由於咱們要使用擴展歐幾里得來求不定方程,咱們都知道歐幾里得是求gc

ax + by = gcd(a,b)co

中的 x,y的,所以若是咱們要把c代換成gcd(a,b)的話,c必定是gcd(a,b)的整數倍,所以gcd(a,b) | c,所以若是c不是gcd(a,b)的整數倍的話,該不定方程無解。

 

接下來,就要解這個方程了

由於以前咱們獲得c必定是gcd(a,b)的整數倍,因此設c = k * gcd(a,b),則 k * x 和 k * y就是方程的一組解,很好理解,由於咱們要求

ax + by = c

代入擴展歐幾里得

ax + by = gcd(a,b)

由於兩者是等價的,且 c = k * gcd(a,b),因此兩邊同乘k

k * (ax + by) = k * gcd(a,b)

化簡得

k * x * a + k * y * b = k * gcd(a,b)

將k * gcd(a,b) 等量代換爲 c,獲得

k*x * a + k*y * b = c

因此對於擴展歐幾里得,k*x和k*y就是該不定方程的一個解。

如今有特解,須要求通解:

由於有了解,因此它存在無限的解,因此設t爲任意常數代入擴展歐幾里得方程,設p1a + q1b = gcd(a,b)

設p = p1 * t

q = q1 * t

顯然,由於 p1a + q1b = gcd(a,b)

因此pa + qb = gcd(a,b) * t

兩邊同除以gcd(a,b)

獲得pa / gcd(a,b) + qb / gcd(a,b) = t

兩邊同除t

獲得p1a / gcd(a,b) + q1b / gcd(a,b) = 1

p1a / gcd(a,b) + q1b / gcd(a,b) = 1

p1*(a / gcd(a,b) ) + q1*(b / gcd(a,b)) = 1

根據以前擴展歐幾里得的公式,在ax + by = c中,

c必須是gcd(a,b)的整數倍,如今c = 1,gcd(a,b) = gcd( a / gcd(a,b) , b / gcd(a,b) )

因此c必須是gcd( a / gcd(a,b) , b / gcd(a,b) )的整數倍,且 c = 1,因此gcd( a / gcd(a,b) , b / gcd(a,b) ) 只能等於1,

因此a / gcd(a,b) 和 b / gcd(a,b)必須是互質的,這樣方程纔有解。

知道了判斷條件後,咱們就能夠用擴展歐幾里得求不定方程的通解。

 

2、同餘&逆元

 

接下來須要瞭解一個概念,叫作同餘:

若是 a mod m = b mod m,則稱 a,b 在模 m 的意義下同餘
能夠寫成 a b(mod m)

同餘有如下的性質:

a a(mod m)
a b(mod m),則 b a(mod m)
a b(mod m); b c(mod m),則 a c(mod m)
a b(mod m)c d(mod m),則
a + c b + d(mod m)
a - c b - d(mod m)
ac bd(mod m)
經過上述定義,能夠得出ax 1(mod m) 這個同餘方程

等同於求解不定方程 ax - my = 1  

因此求解ax ≡ 1(mod m)就變成了求解ax - my = 1,因此求解同餘方程至關於求解不定方程。

 

這時候,咱們能夠引入逆元的定義:

逆元素是指一個能夠取消另外一給定元素運算的元素,

因此設a的逆元爲x,則

ax = 1

在模m的狀況下則爲

ax ≡ 1(mod m)

這偏偏是一個同餘方程,因此能夠轉化爲ax - my = 1,用exgcd求解這個不定方程。

 

3、中國剩餘定理(求同餘方程組)

 

那麼如何求解同餘方程組呢?

同餘方程組:

x ≡ a1(mod m1)

x ≡ a2(mod m2)

...

x ≡ an(mod mn)

在gcd(m1,m2,m3,...,mn) = 1(m1,m2,...,mn互質)時解同餘方程組,求解x的最小非負整數解。

 

這時候設m = ∏(i = 1, n)mi,Mi = m/mi,

設 Miti = 1(mod mi) ,即ti爲Mi在模mi狀況下的逆元

 

由於m是m1~mn的公倍數,且Mi = m/mi,因此Mi是除了mi之外的m1~mn的公倍數,

k爲除了i之外的1~n的中的整數,則 Mi = 0 (mod mk) ,即 mk | Mi

因此,aiMiti = 0 (mod mk) 因此只要模數是m1~mn之間且模數不是mi,aiMiti 就等於 0

由於咱們定義 Miti = 1(mod mi)

因此 aiMiti = ai (mod mi),因此只要模數是mi,aiMiti 就等於ai

因此aiMiti只有在mod mi的時候纔等於ai,mod 其它模數的時候都等於0

所以x = ∑(i = 1, n) aiMiti 時,對於每一個方程組:

 x = ai(mod mi)

代入x = ∑(i = 1, n) aiMiti 得

∑(i = 1, n) aiMiti = ai (mod mi)

在兩邊一塊兒 mod mi,

設i = i1時

因此i只要不等於i1,aiMiti都等於0

因此 ai1 = ai1 (mod mi1)

因此x = ∑(i = 1, n) aiMiti 時,方程組有解

此時求出的x是特解,顯然,x+km(k爲整數)是通解。

易證若是要求最小整數解,只要把x對m取模便可。

中國剩餘定理證畢Q.E.D

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息