同餘運算及其基本性質

100除以7的餘數是2,意思就是說把100個東西七個七個分成一組的話最後還剩2個。餘數有一個嚴格的定義:假如
如果兩個數a和b之差能被m整除,那麼我們就說a和b對模數m同餘(關於m同餘)。比如,100-60除以8正好除盡,a≡b(mod m)。比如,剛纔的例子可以寫成100≡60(mod 8)。你會發現這種記號到處都在用,比如和數論相關的書中
就經常把a mod 3 = 1寫作a≡1(mod 3)(一個數永遠和自己同餘)、對稱性(a和b同餘,b和a也就同餘)和傳遞性(a和b同餘,b和c同餘可以推出a和c同餘)。這三個性質都是顯然的。
 同餘運算裏還有稍微複雜一些的性質。比如,同餘運算和整數加減法一樣滿足“等量加等量,其和不變”。小學我們就知道,等式兩邊可以同時加上一個相等的數。例如,a=b可以推出a+100=b+100。這樣的性質在同餘運算中也有:對於同一個模數m,如果a和b同餘,x和y同餘,那麼a+x和b+y也同餘。在我看來,這個結論幾乎是顯然的。當然,我們也可以嚴格證明這個定理。這個定理對減法同樣有效。

性質:如果$a≡b(mod m),x≡y(mod m)$,則a+x≡b+y(mod m)。
證明:條件告訴我們,可以找到p和q使得a-mp = b-mq,也存在r和s使得x-mr = y-ms。於是a-mp + x-mr = b-mq + y-ms,即a+x-m(p+r) = b+y-m(q+s),這就告訴我們a+x和b+y除以m的餘數相同。

容易想到,兩個同餘式對應相乘,同餘式兩邊仍然相等:
如果a≡b(mod m),x≡y(mod m),則ax≡by(mod m)。
證明:條件告訴我們,a-mp = b-mq,x-mr = y-ms。於是(a-mp)(x-mr) = (b-mq)(y-ms),等式兩邊分別展開後必然是ax-m(…) = by-m(…)的形式,這就說明ax≡by(mod m)。

現在你知道爲什麼有的題要叫你“輸出答案mod xxxxx的結果”了吧,那是爲了避免高精度運算,因爲這裏的結論告訴我們在運算過程中邊算邊mod和算完後再mod的結果一樣。假如a是一個很大的數,令b=a mod m,那麼(a * 100) mod m和(b * 100) mod m的結果是完全一樣的,這相當於是在a≡b (mod m)的兩邊同時乘以100。這些結論其實都很顯然,因爲同餘運算只關心餘數(不關心“整的部分”),完全可以每一次運算後都只保留餘數。因此,整個運算過程中參與運算的數都不超過m,避免了高精度的出現。

在證明Fermat小定理時,我們用到了這樣一個定理:
如果ac≡bc(mod m),且c和m互質,則a≡b(mod m) (就是說同餘式兩邊可以同時除以一個和模數互質的數)。
證明:條件告訴我們,ac-mp = bc-mq,移項可得ac-bc = mp-mq,也就是說(a-b)c = m(p-q)。這表明,(a-b)c裏需要含有因子m,但c和m互質,因此只有可能是a-b被m整除,也即a≡b(mod m)。

可能以後還要用到更多的定理,到時候在這裏更新。

轉自:http://www.matrix67.com/blog/archives/236

發佈了79 篇原創文章 · 獲贊 32 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章