乘法逆元(對於質數模數的乘法逆元)
阿新 • • 發佈:2018-12-24
逆元是什麼
- 設S為一有二元運算 * 的集合。若e為(S,*)的單位元且a*b=e,則a稱為b的左逆元素且b稱為a的右逆元素。若一元素x同時是y的左逆元素和右逆元素時,x稱為y的兩面逆元素或簡稱為逆元素。S內的一有兩面逆元素的元素被稱為在S內為可逆的。
- 直觀地說,它是一個可以取消另一給定元素運算的元素。
乘法逆元
- 也就是說,對於一個乘法運算
∗b ,它的乘法逆元就是它的倒數b−1 。
分數取模
然而在很多題目中,資料都是十分大的,所以題目經常會出現”答案模Ha”,就是對Ha取模,這裡Ha一般是個質數,比如說最常見的
109+7 (1000000007 ),此時,要是答案是個分數,那該怎麼辦呢?答案就是要用到分數取模的方法。先把內容寫出來,下面再證明:
當gcd(b,Ha)==1時(其實就是 b 和 Ha 互質)
a∗b−1 ≡a∗bHa−2 (mod Ha)這裡的”≡”是同餘符號,意思是左邊那個和右邊那個除以最後括號裡的Ha的餘數相同。
這樣我們要求a/b模Ha的值時,就不會不知所措,只需求出a∗bHa−2 模Ha的值就行了。
證明
這個的證明需要用到費馬小定理,費馬小定理就先不證了,可以百度或看其它的博文。
費馬小定理:
- 假如p是質數,且gcd(a,p)=1,那麼
ap−1 ≡ 1 (mod p)。- 即:假如a是整數,p是質數,且a,p互質(即兩者只有一個公約數1),那麼a的(p-1)次方除以p的餘數恆等於1。
若gcd(b,Ha)==1那麼我們就可以做一下推導(此處模數都為Ha,就不打上去了):
bHa−1 ≡ 1
bHa−2 ≡b−1
a∗bHa−2 ≡a∗b−1 第二行是第一行兩邊同乘
b−1 得到的
這樣,分數取模我們就學會了。
注意
要注意幾點:
* Ha必須是質數
* b與Ha要互質