欧拉函数
欧拉函数的定义
欧拉函数,即 \(\varphi(n)\),表示 \(1\sim n\) 与 \(n\) 互质的数的个数。
特别的,\(\varphi(1)=1\)。
当 \(n\) 为质数时,显然有 \(\varphi(n)=n-1\)。
积性函数
积性函数的定义:对于任意满足 \(\gcd(a,b)=1\) 的 \(a\) 和 \(b\),如果满足 \(f(ab)=f(a)\times f(b)\),则称 \(f\) 函数为积性函数。
欧拉函数是积性函数。证明如下:
对于两个互质的数的乘积 \(n\),必然可以表示为 \(n=q^ap^b\)(\(p\)、\(q\) 为质数)。
我们用 \(g(x,y)\) 表示 \(\le x\) 的数中 \(y\) 的的倍数的个数,则有 \(g(n,p)=p^{a-1}q^b\),\(g(n,q)=p^aq^{b-1}\),\(g(n,pq)=p^{a-1}q^{b-1}\)。
由容斥原理得 \(n=g(n,p)+g(n,q)-g(n,qp)+\varphi(n)\)。
得证欧拉函数为积性函数。
欧拉函数的求值
对于 \(n={p_1}^{k_1}{p_2}^{k_2}\cdots {p_r}^{k_r}\),由积性函数的性质我们可以得到:
一些性质&定理
性质 1
设 \(n\) 是一个大于 \(2\) 的正整数,则所有与 \(n\) 互质的数的和为 \(\varphi(n)\div2\times n\)。\(\varphi(n)\) 为偶数。
性质 2
\(\sum_{d|n}\varphi(d)=n\)
欧拉定理
如果两个整数 \(a\) 和 \(b\) 互质,那么 \(a^{\varphi(b)}\equiv1(mod\ n)\)。
费马小定理
如果 \(p\) 是一个质数,且 \(a\) 不是 \(p\) 的倍数,那么 \(a^{p-1}\equiv1(mod\ p)\)。
线性筛求欧拉函数
时间复杂度在 \(O(n)\) 左右。
phi[1]=1;
for(int i=2;i<=n;i++)
{
if(!flag[i])
{
phi[i]=i-1;
p[++k]=i;
}
for(int j=1;p[j]*i<=n;j++)
{
flag[p[j]*i]=true;
if(i%p[j]==0)
{
phi[i*p[j]]=phi[i]*p[j];
break;
}
else phi[i*p[j]]=phi[i]*(p[j]-1);
}
}

浙公网安备 33010602011771号