数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)
一般大佬會給你證明,而菜鳥會教你怎么使用。
先擺上公式:
ab≡{abmod?(p)gcd(a,p)=1abgcd(a,p)≠1,b<?(p)abmod?(p)+?(p)gcd(a,p)≠1,b≥?(p)(modp)a^{b} \equiv \begin{cases} a^{bmod\phi (p)} & \text gcd(a,p)=1 \\ a^b & \text gcd(a,p)\neq 1,b<\phi (p)\\ a^{bmod\phi (p)+\phi (p)} & \text gcd(a,p)\neq 1,b\geq \phi (p) \end{cases} \ \ \ \ (modp)ab≡??????abmod?(p)ababmod?(p)+?(p)?gcd(a,p)=1gcd(a,p)?=1,b<?(p)gcd(a,p)?=1,b≥?(p)?????(modp)
歐拉降冪:
ab≡abmod?(p)gcd(a,p)=1a^{b} \equiv a^{bmod\phi (p)} \ \ gcd(a,p)=1ab≡abmod?(p)??gcd(a,p)=1
適用范圍:
當底與取模的數互質,且b較大的時侯,我這句話用不到,直接擴展歐拉降冪就好了,時間復雜度差不了多少。
擴展歐拉定理:
ab≡{abgcd(a,p)≠1,b<?(p)abmod?(p)+?(p)gcd(a,p)≠1,b≥?(p)(modp)a^{b} \equiv \begin{cases} a^b & \text gcd(a,p)\neq 1,b<\phi (p)\\ a^{bmod\phi (p)+\phi (p)} & \text gcd(a,p)\neq 1,b\geq \phi (p) \end{cases} \ \ \ \ \ (modp)ab≡{ababmod?(p)+?(p)?gcd(a,p)?=1,b<?(p)gcd(a,p)?=1,b≥?(p)??????(modp)
總結:
用的時候我們只考慮擴展的就可以了,因為bmod?(p)≡bmod?(p)+?(p)bmod\phi (p)≡bmod\phi (p)+\phi (p)bmod?(p)≡bmod?(p)+?(p)
代碼:
這個代碼的優點是,如果b太大,不能讀入的話也是可以處理的。
如果代碼需要多次計算的話,可以使用線性篩法,獲得歐拉函數的值。
題目:
洛谷模板題
總結
以上是生活随笔為你收集整理的数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CF思维联系– CodeForces -
- 下一篇: 数学--数论--欧拉降幂--P5091