數論之中國剩餘定理

歐幾里得算法是一種求解兩非負數最大公約數的過程,它本質上就是執行展轉相除法。html

    int gcd(int a,int b)
    {
        return b==0?a:gcd(b,a%b);
    }

可證實最終獲得的結果(設爲\(r_n\))就是所求最大公約數:第一步證實\(r_n\)是兩數約束,第二步證實\(r_n\)可被兩數任意約數整除。算法

貝祖定理:對於不全爲 0 的天然數\(a,b\),必然存在整數\(x,y\)(不惟一)知足等式\(ax+by=gcd(a, b)\)。使用擴展歐幾里得算法可以證實。進而可知,若\(a,b\)互素,那麼存在整數\(x,y\)知足等式\(ax+by=1\)。更進一步,若\(a,b\)互素,總能夠找到一個比\(b\)小的非負數\(x\),使得\(ax=1(\bmod b)\)成立。函數

中國剩餘定理是從一個方程求解過程總結出的定理。ui

  有同餘方程組:\(\left\{\begin{array}{l}{x \equiv a_{1}\left(\bmod m_{1}\right)} \\ {x \equiv a_{2}\left(\bmod m_{2}\right)} \\ {\cdots} \\ {x \equiv a_{k}\left(\bmod m_{k}\right)}\end{array}\right.\),其中\(m_1, m_2, \cdots, m_k\)爲兩兩互素整數,求\(x\)的最小非負整數解。spa

求解:.net

  1. 令\(M=\prod_{i=1}^{k} m_{i}\),即\(M\)是全部\(m_i\)的最小公倍數;
  2. 因爲\(m_i\)兩兩互素,因此\(\frac{M}{m_{i}}\)與\(m_i\)亦互素,根據上述貝祖定理推論,可有\(\frac{M}{m_{i}} t_{i} \equiv 1\left(\bmod m_{i}\right)\);
  3. 則有一個解爲\(x=\sum_{i=1}^{k} a_{i} \frac{M}{m_{i}} t_{i}\),通解爲\(x+i * M(i \in Z)\),特別的,最小非負整數解爲\((x \% M+M) \% M\)。

證實:code

  1. 由\(\frac{M}{m_{i}} t_{i} \equiv 1\left(\bmod m_{i}\right)\)兩邊同乘\(a_i\)得:\(a_i\frac{M}{m_{i}} t_{i} \equiv a_i\left(\bmod m_{i}\right)\);
  2. 又\(\forall k \downarrow=i, a_{i} \frac{M}{m_{i}} t_{i} \equiv 0\left(\bmod m_{k}\right)\);
  3. 將兩式代入原方程,易得[其中一解]\(x=\sum_{i=1}^{k} a_{i} \frac{M}{m_{i}} t_{i}\)。

推論:基於上述同餘方程組,對於不一樣的\(\left(a_{1}, a_{2} \dots, a_{k}\right)\)集合,\(0 \leqslant x_{最小非負值} \leqslant M\)取值亦各不相同,此一一對應關係可用於推導歐拉函數htm

 

參考資料:blog

展轉相除法的原理get

POJ1006: 中國剩餘定理的完美演繹

中國剩餘定理 && 擴展中國剩餘定理

 

 

轉載請註明本文出處:http://www.javashuo.com/article/p-emqdyuvv-gq.html

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