歐拉函數|(擴展)歐拉定理|歐拉反演


也許更好的閱讀體驗

歐拉函數

  • 定義
    歐拉函數是 小於等於 x的數中與x 互質 的數的 數目
    符號\(\varphi(x)\)
    互質 兩個互質的數的最大公因數等於1,1與任何數互質

  • 通式
    \(\varphi(x)=x\prod_{i=1}^n(1-\frac{1}{p_i})\)
    其中\(p_i\)\(x\)的質因子,\(n\)\(x\)的質因子個數


歐拉函數常用性質

  • \(n\)為質數,顯然\(\varphi(n)=n-1\)
    \(\begin{aligned}\end{aligned}\)

  • 歐拉函數是積性函數
    積性函數: 對於任意 互質 的整數\(a\)\(b\)有性質\(f(ab)=f(a)·f(b)\)的數論函數。
    \(m,n\)互質,\(\varphi(mn)=\varphi(m)·\varphi(n)\)
    \(\begin{aligned}\end{aligned}\)

  • 如果\(x=2n\)(\(n\)為奇數),\(\varphi(x)=\varphi(n)\)\(\varphi(2n)=\varphi(n)\)(\(n\)為奇數)
    n為奇數時,n與2互質,\(\varphi(2)=1\)
    \(\begin{aligned}\end{aligned}\)

  • \(p\)為質數,則\(\varphi(p^k)=p^k-p^{k-1}\)
    因為與\(p^k\)不互質的只有\(p\)的倍數,而\(p^k\)\(p\)的倍數有\(p^{k-1}\)
    \(\begin{aligned}\end{aligned}\)

  • \(x>2\)時,\(\varphi(x)\)為偶數
    這一點需要了解更相減損術 即\(gcd(n,x)=gcd(n,n-x)\)
    由該公式我們可以知道,所有與\(n\)互質的數都是成對出現的
    \(\begin{aligned}\end{aligned}\)

  • 小於n的數中,與n互質的數的總和為\(\varphi(n)*n/2\ \ (n>1)\)
    由上面的證明(更相減損術)我們知道,每一對與\(n\)互質的數的和為\(n\),共有\(\varphi(n)/2\)
    \(\begin{aligned}\end{aligned}\)

  • \(n=\sum_{d|n}\varphi(d)\)\(n\)的因數\((\)包括\(1\)和它自己\()\)的歐拉函數之和等於\(n\)
    這條性質的運用又叫 歐拉反演
    定義函數
    \(\begin{aligned}f(n)=\sum_{d|n}\varphi(d)\end{aligned}\)

    • \(f(n)\)為積性函數
      \(\begin{aligned}f(n)·f(m)=\sum_{i|n}\varphi(i)\sum_{j|m}\varphi(j)=\sum_{i|n}\sum_{j|m}\varphi(i)·\varphi(j)=\sum_{i|n}\sum_{j|m}\varphi(i·j)=\sum_{d|nm}\varphi(d)=f(nm)\end{aligned}\)

    \(f(p^k)=\varphi(1)+\varphi(p)+\varphi(p^2)+\cdots+\varphi(p^k)=1+(p-1)+(p^2-p)+\cdots+(p^k-p^{k-1})=p^k\)

    \(n=p_1^{k_1} ·p_2^{k_2}· \cdots·p_m^{k_m}\)

    \(f(n)=f(p_1^{k_1})·f(p_2^{k_2})·\cdots·f(p_m^{k_m})=p_1^{k_1} ·p_2^{k_2}· \cdots·p_m^{k_m}=n\)
    \(\begin{aligned}\end{aligned}\)


歐拉定理

\(a,m\)互質,\(a^{\varphi(m)}≡1(mod\ m)\)

  • 證明

    • 剩余系 指對於某一個特定的正整數\(n\),一個整數集中的數\(mod\ n\)所得的余數域。
      • 完全剩余系\(m\in Z+\),若\(r_0,r_1,...r_{m−1}\)\(m\)個整數,並且兩兩模\(m\)不同余,則\(r_0,r_1,...r_{m−1}\)叫作模\(m\)的一個完全剩余系。
      • 縮系\(A\)\(mod\ n\)的剩余系,若任意\(A\)中兩個元素相乘\(mod\ n\)后仍為\(A\)中的元素,則稱\(A\)\(mod\ n\)的縮系
      • \(a,m\)互質,則\(m\)的一個縮系為
        \(\{x_1,x_2,x_3...x_{\varphi(m)}\}\)
        \(\{ax_1\%m,ax_2\%m,ax_3\%m...ax_{\varphi(m)}\%m\}\)也是\(mod\ m\)的縮系
        於是可以得到
        \(\sum_{i=1}^{\varphi(m)}ax_i\equiv \sum_{i=1}^{\varphi(m)}x_i\ (mod\ m)\)
        \(a^{\varphi(m)}\sum_{i=1}^{\varphi(m)}x_i\equiv \sum_{i=1}^{\varphi(m)}x_i\ (mod\ m)\)
        \(a^{\varphi(m)}\equiv 1\ (mod\ m)\)
        • 而當\(m\)為質數時,\(\varphi(m)=m-1\)
          \(a^{(m-1)}≡1(mod\ m)\)
          這就是我們熟知的 費馬小定理
  • 變式 \(a,m\)互質\(a^b≡a^{b\%\varphi(m)}(mod\ m)\)


擴展歐拉定理

\(b>\varphi(m)\) 即使\(a,m\)不互質\(a^b≡a^{b \%\varphi(m)+\varphi(m)}\left(mod\ m\right)\)

  • 證明
    \(m\)中提一個質因子\(p\)出來 令\(m=p^k·s\)
    \(gcd(p^k,s)=1\),即\(p^k,s\)互質
    根據歐拉定理,我們知道\(p^{\varphi(s)}≡1(mod\ s)\)
    根據歐拉函數是積性函數,我們知道\(\varphi(s)|\varphi(m)\)所以有\(p^{\varphi(m)}≡p^{\varphi(s)}(mod\ s)\)
    \(p^{\varphi(s)}=xs+1\)
    那么\(p^{\varphi(s)+k}=xm+p^k\)
    所以\(p^{\varphi(s)+k}≡p^k (mod\ m)\),也有\(p^{\varphi(m)+k}≡p^k (mod\ m)\)
    \(b>=k\)時,\(p^b≡p^{b-k}·p^k≡p^{b-k}·p^{\varphi(s)+k}≡p^{b+\varphi(m)}(mod\ m)\)
    又因為\(k<=\varphi(p^k)<=\varphi(m)\),所以當\(b>=2\varphi(m)\)時,滿足\(p^b≡p^{b-\varphi(m)}(mod\ m)\)
    注意是\(2\varphi(m)\)!
    所以可以得到\(p^b≡p^{b\%\varphi(m)+\varphi(m)}(mod\ m)\)
    因此我們可以得到對任意質數\(p\)都有\(b>=2\varphi(m),p^b≡p^{b\%\varphi(m)+\varphi(m)}(mod\ m)\)
    \(m\)質因子的\(p\),有歐拉定理
    \(a\)因式分解,可以得到
    \(a^b≡a^{b\%\varphi(m)+\varphi(m)}(mod\ m)\)
    • 注意 \(b<\varphi(m)\)時,公式不一定成立

線性篩法

類似與篩素數,我們在這里利用歐拉函數是積性函數這個性質來篩\(\varphi\)
\(\mathcal{Code}\)

int cnt;
int prime[maxn],phi[maxn];
bool vis[maxn];
void Euler_sieve (int n)
{
	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]]=true;
			if (i%prime[j]==0){	phi[i*prime[j]]=phi[i]*prime[j];break;}
			phi[i*prime[j]]=phi[i]*phi[prime[j]];
		}
	}
} 

歐拉反演

利用歐拉函數的一條性質
\(\begin{aligned}n=\sum_{d|n}\varphi(d)\end{aligned}\)
(上面有證明)
我們試着把\(n\)換成其他東西試試
\(\begin{aligned}gcd(i,j)=\sum_{d|gcd(i,j)}\varphi(d)=\sum_{d|i}\sum_{d|j}\varphi(d)\end{aligned}\)
讓我們求個東西試試
\(\begin{aligned}\sum_{i=1}^ngcd(i,n)=\sum_{i=1}^n\sum_{d|i}\sum_{d|n}\varphi(d)=\sum_{d|n}\sum_{i=1}^n\sum_{d|i}\varphi(d)=\sum_{d|n}\frac{n}{d}\varphi(d)\end{aligned}\)
把它重寫一遍作為結論
\(\begin{aligned}\sum_{i=1}^ngcd(i,n)=\sum_{d|n}\frac{n}{d}\varphi(d)\end{aligned}\)

如有哪里講得不是很明白或是有錯誤,歡迎指正
如您喜歡的話不妨點個贊收藏一下吧
如能得到推薦博主就更開心了
您的鼓勵是博主的動力


免責聲明!

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



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