欧拉函数与欧拉定理
互质
\(\forall a,b \in \mathbb{N}\),若\(\operatorname{gcd}(a,b) = 1\) ,则称\(a\)与\(b\)互质
欧拉函数
\(1 \sim N\)中与\(N\)互质的数的个数被称作欧拉函数,记为\(\varphi(N)\)。
若在算数基本定理中,\(N = \prod_{i=1}^{m} {p_i^{c_i}}\),则:
设\(p,q\)是\(N\)是质因子,则\(1 \sim N\)中\(p,q\)的倍数分别为\(\frac{N}{p},\frac{N}{q}\)个,根据容斥原理,\(N\)中同时是\(p,q\)倍数的个数为:
\[N-\frac{N}{p}-\frac{N}{q}+\frac{N}{pq}=N(1-\frac{1}{p})(1-\frac{1}{q}) \]以此类推,得到欧拉函数的计算公式。
单个数字的欧拉函数值的计算代码:
int phi(int x){
int res=x;
for(int i=2;i<=sqrt(x);i++){
if(x%i==0){
res=res/i*(i-1);
while(x%i==0)x/=i;
}
}
if(x>1){
res=res/x*(x-1);
}
return res;
}
积性函数
如果当\(a,b\)互质时,\(f(ab)=f(a)f(b)\),那么称\(f\)为积性函数
欧拉函数性质
-
\(\forall n >1,1 \sim n\)中与\(n\)互质的数的和为\(\frac{n * \varphi(n)}{2}\)
因为\(\operatorname{gcd}(n,x) = \operatorname{gcd}(n,n-x)\),所以与\(n\)不互质的数\(x,n-x\)成对出现,平均值为\(n/2\),因此得到与\(n\)互质的数的平均值为\(n/2\),进而得到性质1。
-
若\(a,b\)互质,有\(\varphi(ab) = \varphi(a)\varphi(b)\)
因为\(a,b\)互质,所以\(a,b\)没有相同的质因数,对\(a,b\)分解质因数,把\(\varphi(a),\varphi(b)\)展开相乘即可得到\(\varphi(ab)\)。
-
若\(f\)为积性函数,且\(n=\prod_{i=1}^{m} {p_i^{c_i}}\),那么\(f(n)= \prod_{i=1}^{m} {f(p_i^{c_i})}\)
根据积性函数的定义,显然有性质3。
-
设\(p\)是质数,若\(p \mid n\)且\(p^2 \mid n\),则\(\varphi(n)=\varphi(n/p)\times p\)
由\(p \mid n , p^2 \mid n\),可得\(n,n/p\)有相同的质因子且只有\(p\)的质数不同,把二者展开之后发现\(\frac{\varphi(n)}{\varphi(n/p)} = p\),所以性质4成立。
-
设\(p\)是质数,若\(p \mid n\)且\(p^2 \nmid n\),则\(\varphi(n)=\varphi(n/p)\times (p-1)\)
由\(p \mid n\)且\(p^2 \nmid n\),得\(p\)和\(n/p\)互质,由性质2得\(\varphi(n) = \varphi(n/p) \times \varphi(p)\),又由\(p\)是质数得\(\varphi(p)=p-1\),所以性质5成立。
-
\(\sum_{d \mid n} {\varphi(d)} =n\)
令\(f(x)= \sum_{d \mid x} {\varphi(d)}\),若\(x,y\)互质,那么对于\(xy\)的每个约数\(z\),都有唯一的\(a,b\),使得\(a \mid x, b \mid y ,ab=z\),所以,\(f(x)f(y)=(\sum_{d \mid x} {\varphi(d)}) \times(\sum_{d \mid y} {\varphi(d)})=\sum_{d \mid xy} {\varphi(d)}=f(xy)\),所以\(f(x)\)是一个积性函数。由性质3得,\(f(n)=\prod_{i=1}^{m} {f(p_i^{c_i})}=\prod_{i=1}^{m} {\sum_{j=0}^{c_i}{\varphi(p_i^{j})}}\),因为\(\sum_{j=1}^{c_i}{\varphi(p_i^{j})}\)是一个等比数列求和再加\(1\),所以\(\sum_{j=1}^{c_i}{\varphi(p_i^{j})} = 1+\frac{(p-1)p^{c_i}-(p-1)}{p-1} = p_{c_i}\),带入\(f(n)\),得\(f(n)=\prod_{i=1}^{m} {f(p_i^{c_i})}=\prod_{i=1}^{m} {p_i^{c_i}}=n\),所以性质6成立。
线性筛求欧拉函数
由性质4和性质5得
若\(p \mid n\)且\(p^2 \mid n\),则\(\varphi(n)=\varphi(n/p)\times p\)
若\(p \mid n\)且\(p^2 \nmid n\),则\(\varphi(n)=\varphi(n/p)\times (p-1)\)
在线性筛中,每个合数数会被其最小的质因子所标记,所以我们可以利用这一性质进行递推,从\(\varphi(n/p)\)推到\(\varphi(n)\)。
void euler(){
phi[1]=1;
for(int i=2;i<=maxn;i++){
if(!fl[i]){
cnt++,pr[cnt]=i;
v[i]=i,phi[i]=i-1;
}
for(int j=1;j<=cnt&&pr[j]<=maxn/i;j++){
if(pr[j]>v[i])break;
fl[pr[j]*i]=true;
v[pr[j]*i]=pr[j];
phi[pr[j]*i]=phi[i]*(i%pr[j]==0?pr[j]:pr[j]-1);
}
}
return;
}
费马小定理
若\(p\)是质数,那么有:
欧拉定理
若\(a,m\)互质,那么有:
扩展欧拉定理
\( a^b = \left\{ \begin{aligned} & a^b \ \ b<m\\ & a^{b\ mod \ \varphi(m)} \ \ gcd(a,m)=1\\ & a^{b\ mod \ \varphi(m)+\varphi(m)} \ gcd(a,m) \ne 1 \end{aligned} \ (mod \ m) \right. \)