如何作求模運算?


1.取模運算是什么意思?

取模運算是求兩個數相除的余數。

取模運算(“Modulo Operation”)和取余運算(“Remainder Operation ”)概念重疊但不完全一致。

主要的區別在於對負整數進行除法運算時操作不同。

取模主要是用於計算機術語中。

取余則更多是數學概念。

2.如何做取模運算?

如果 % 兩邊的操作數都為正數,則結果為正數或零;

如果 % 兩邊的操作數都是負數,則結果為負數或零。

C99 以前,並沒有規定如果操作數中有一方為負數,模除的結果會是什么。

C99 規定,如果 % 左邊的操作數是正數,則模除的結果為正數或零;

如果 % 左邊的操作數是負數,則模除的結果為負數或零。例如:

          15 % 2       // 余 1
          15 % -2      // 余 1
          -15 % 2      // 余 -1
          -15 % -2     // 余 -1

標准規定,如果 a 和 b 都是整數,則 a % b 可以用公式 a - (a / b) * b 算出。例如:

          -15 % 2 == -15 - (-15 / 2) * 2 == -15 - (-7) * 2 == -1

如果ax1(mop),且a與p互質(gcd(a,p)=1),則稱a關於模p的乘法逆元為x。(不互質則乘法逆元不存在)

求逆元的四種方法:

什么是逆元?

逆元--即逆元素,是指一個可以取消另一給定元素運算的元素

也就是說,你對A做了某種操作,得到A',現在你又用某個神奇的力量對A'操作,然后使A'又回到了A,這個神奇的力量就叫A的逆元(逆元素)

1.費馬小定理

如果p是一個質數,而整數a不是p的倍數,則有a^(p-1)≡1(mod p)

引用一個大神的筆記:https://zhuanlan.zhihu.com/p/372089693?utm_source=wechat_session&utm_medium=social&utm_oi=775109650671476736

通過逆元的定義公式( [公式] )和費馬定理的推論公式( [公式] )

得到(條件:a,p互素)

 [公式]

例如7d = 1 mod 40 

 

 這里出現了一個模冪運算,如何求模冪

 

2.歐拉定理求逆元 (相當於費馬小定理的擴展)

3.擴展歐幾里德

 

4.遞推打表

一般使用費馬小定理和和費馬小定理的推廣求逆元

 

3.取模運算代碼實現


免責聲明!

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



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