模運算


🪶模運算的規則

三則運算

\((a+b)\%p=(a\%p+b\%p)\%p\)

\((a-b)\%p=(a\%p-b\%p)\%p\)

\((a\times b)\%p=(a\%p \times b\%p)\%p\)

除法的模運算和其它三則的不一樣。

\((a^b)\%p=((a\%p)^b)\%p\)

\(\\\)

結合律

\((a+b)\%p+c\%p=(a+(b+c))\%p\)

\((a\times b)\%p\times c\%p=(a\times (b\times c))\%p\)

\(\\\)

交換律

\((a+b)\% p = (b+a)\% p\)

\((a \times b)\% p = (b\times a) \% p\)

\(\\\)

分配律

\((a+b) \% p = ( a \% p + b \% p ) \%p\)

\(((a +b)\% p * c) \% p = ((a * c) \% p + (b * c) \% p) \% p\)

\(\\\)

定理

\(a≡b (\% p)\),則對於任意的\(c\),都有\((a + c) ≡ (b + c) (\%p)\)

\(a≡b (\% p)\),則對於任意的\(c\),都有\((a * c) ≡ (b * c) (\%p)\)

\(a≡b (\% p)\)\(c≡d (\% p)\),則 \((a + c) ≡ (b + d) (\%p),(a - c) ≡ (b - d) (\%p),(a * c) ≡ (b * d) (\%p)。\)

\(\\\)

\(\\\)

🪶寫程序時

加減乘類

對於\(a+b,a\times b,a-b\)這類的算式:

在計算前先把\(a,b\)\(p\)取模。

\(\\\)

乘方類

對於\({a}^{b}\)這樣的算式:

\(gcd(a,p)=1\)

對於\(a^b\)這類的算式,可以在計算前先把\(a\)\(p\)取模,再把\(b\)\(\varphi(p)\)取模(歐拉定理),在進行乘方運算。

\(gcd(a,p)\ne 1\)

也可以運用擴展歐拉定理進行運算。

\(\\\)

除類

前提:\(b\)\(p\)互質

對於\(\frac{a}{b}\)這樣的算式:

先把\(a,b\)各自對\(p\)取模,求\(b\)在模\(p\)意義下的逆元,再計算\(a*b^{-1}\% p\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM