歐拉函數


歐拉函數:

定義:

\(\varphi (n)\) 表示小於等於 \(n\) ,和 \(n\) 互質的數的個數。

\(n\) 為質數, \(\varphi(n)=n-1\)

性質:

  1. 歐拉函數為積性函數(可以用線性篩計算)
    如果 \(gcd(a,b)=1\) , 那么 $\varphi(a \times b)=\varphi(a) \times $

  2. \(n\) 為奇數時 \(\varphi(2n)=\varphi(n)\)

  3. \(n=\sum{d|n} \varphi(d)\),根據莫反得到

  4. \(n=p^k\) ,其中 \(p\) 是質數,那么 \(\varphi(n)=p^k-p^{k-1}\)

歐拉定理:

\(gcd(a,m)=1\) ,則 \(a^{\varphi(m)} \equiv 1(\mod m)\)

求歐拉函數:

線性篩即可。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int prime[N],vis[N],phi[N],cnt,n;//定義:小於等於n,且和n互質的數
int main(){
    scanf("%d",&n);
    vis[1]=phi[1]=1;
    for(int i=2;i<=n;i++){
        if(!vis[i]) prime[++cnt]=i,phi[i]=i-1;
        for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
            vis[i*prime[j]]=1;
            if(!(i%prime[j])){
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }
            phi[i*prime[j]]=phi[i]*phi[prime[j]];
        }
    }    
    system("pause");
    return 0;
}

費馬小定理:

\(p\) 為素數,且 \(gcd(a,p)=1\) , 則 \(a^{p-1} \equiv 1 (\mod p)\)

或者也可以說 \(a^p \equiv a(\mod p)\)

拓展歐拉定理:

\[a^c~\equiv~\begin{cases}a^{c~Mod~\phi(m)} &\gcd(a,m)~=~1 \\a^c &\gcd(a,m)~\neq~1~\land~c~<~\phi(m) \\ a^{c~Mod~\phi(m)~+~\phi(m)} &\gcd(a,m)~\neq~1~\land~c~\geq~\phi(m)\end{cases} \]

證明看 \(OI-WIKI\) 就行了.


免責聲明!

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



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