欧拉函数总结

定义

欧拉函数,即 φ(n)\varphi(n),表示小于等于 nn 的数中与 nn 互质的数的个数

性质

性质一

nn 为质数时,
φ(n)=n1\varphi(n)=n-1

证明:过于显然。

性质二

n=pkn=p^k 时,
φ(n)=(p1)p(k1)\varphi(n)=(p-1)p^{(k-1)}

证明:

φ(n)\varphi(n)\\
=φ(pk)=\varphi(p^k)\\
=pkpkp=p^k-\frac{p^k}{p}\\
=pkp(k1)=p^k-p^{(k-1)}\\
=(p1)p(k1)=(p-1)p^{(k-1)}

性质三

欧拉函数是积型函数,即对于任意互质的 aabb,都有
φ(ab)=φ(a)×φ(b)\varphi(ab)=\varphi(a) \times \varphi(b)

证明:我不会,日后再证。

性质四

n=p1k1p2k2...pnknn=p_{1}^{k_1}p_{2}^{k_2}...p_{n}^{k_n},则
φ(n)=n(11p1)(11p2)...(11pk)\varphi(n)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})...(1-\frac{1}{p_k})

证明:

φ\varphi 为积性函数及性质二,得:

φ(n)\varphi(n)\\
=φ(p1k1)φ(p2k2)...φ(pnkn) =\varphi(p_{1}^{k_1})\varphi(p_{2}^{k_2})...\varphi(p_{n}^{k_n})\\\ \\
=(p11)p1(k11)(p21)p2(k21)...(pn1)pn(kn1) =(p_1-1)p_{1}^{(k_1-1)}(p_2-1)p_{2}^{(k_2-1)}...(p_n-1)p_{n}^{(k_n-1)}\\\ \\
=(p11)p1p1k1(p21)p2p2k2...(pn1)pnpnkn =\frac{(p_1-1)}{p_1}p_{1}^{k_1}\frac{(p_2-1)}{p_2}p_{2}^{k_2}...\frac{(p_n-1)}{p_n}p_{n}^{k_n}\\\ \\
=n(11p1)(11p2)...(11pk)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})...(1-\frac{1}{p_k})

性质五

nn 为一个大于 22 的整数,则所有与互质的数的和为
φ(n)2×n\frac{\varphi(n)}{2 }\times n
φ(n)\varphi(n) 为偶数

证明:我懒,以后再写。

性质六

dnφ(d)=n\sum_{d \mid n}\varphi(d)=n
证明:

f(i,n)f(i,n) 表示 1n1\sim n 中与 nn 的最大公因数为 ii 的数的个数,则显然:
f(1,n)+f(2,n)+f(3,n)+...+f(n,n)=nf(1,n)+f(2,n)+f(3,n)+...+f(n,n)=n
ini \nmid n,则 f(i,n)f(i,n) 显然为 00

否则相当与求:
j=1n[gcd(j,n)=i]\sum_{j=1}^{n}[\gcd(j,n)=i]
化简后得:
j=1ni[gcd(j,n)=1]\sum_{j=1}^{\frac{n}{i}}[\gcd(j,n)=1]
φ(ni)\varphi(\frac{n}{i})

同理 φ(i)\varphi(i) 也会加进去

故原式成立

性质七

pnp \mid np2np^2 \mid nφ(n)=φ(np)×p\varphi(n)=\varphi(\frac{n}{p}) \times p

pnp \mid np2np^2 \nmid nφ(n)=φ(np)×(p1)\varphi(n)=\varphi(\frac{n}{p}) \times (p-1)

证明:

n=pkp1k1p2k2...pnknn=p^kp_{1}^{k_1}p_{2}^{k_2}...p_{n}^{k_n},则

φ(n)=n(11p)(11p1)(11p2)...(11pk)\varphi(n)=n(1-\frac{1}{p})(1-\frac{1}{p_1})(1-\frac{1}{p_2})...(1-\frac{1}{p_k})

pnp \mid np2np^2 \mid n(即 k2k \geqslant 2) 则

φ(np)=np(11p)(11p1)(11p2)...(11pk)\varphi(\frac{n}{p})=\frac{n}{p}(1-\frac{1}{p})(1-\frac{1}{p_1})(1-\frac{1}{p_2})...(1-\frac{1}{p_k})

显然 φ(n)=φ(np)×p\varphi(n)=\varphi(\frac{n}{p}) \times p

这是欧拉函数能被筛的重要性质

性质八

aamm 互质,则
aφ(m)1(modm)a^{\varphi(m)}\equiv1(\bmod m)

证明:

a1,a2,...aφ(m)a_1,a_2,...a_{\varphi(m)} 为小于等于 mm 且与 mm 互质的数,因为 aamm 互质,所以 aa1,aa2...aaφ(m)aa_1,aa_2...aa_{\varphi(m)} 互不相同且与 mm 互质,所以 aa1,aa2...aaφ(m)aa_1,aa_2...aa_{\varphi(m)}modm\bmod m 意义下与 a1,a2,...aφ(m)a_1,a_2,...a_{\varphi(m)} 相等,所以

aa1×aa2...aaφ(m)a1a2...aφ(m)(modm)aa_1 \times aa_2...aa_{\varphi(m)} \equiv a_1a_2...a_{\varphi(m)}(\bmod m)
aφ(m)(a1a2...aφ(m))a1a2...aφ(m)(modm)a^{\varphi(m)}(a_1a_2...a_{\varphi(m)}) \equiv a_1a_2...a_{\varphi(m)}(\bmod m)
所以
aφ(m)1(modm)a^{\varphi(m)}\equiv1(\bmod m)

然后就结束了

求法

欧拉函数有两种求法,一种是用性质四求单个欧拉函数,一种是用性质七筛欧拉函数

单个欧拉函数

基于分解质因数

long long phi(long long n)
{
	long long ph=n;
	for(int i=2;i*i<=n;i++)
	{
		if(n%i==0)//当i为n的因数时
		{
			ph=ph/i*(i-1);//性质四
			while(n%i==0) n/=i;
		}
	}
	if(n>1) ph=ph/n*(n-1);
	return ph;
}

筛欧拉函数

基于线性筛,顺便还能筛个质数

long long phi[],prime[],idx;
bool isprime[];
void shai(long long n)
{
	phi[1]=1;
	for(int i=2;i<=n;i++)
	{
		if(!isprime[i])
		{
			prime[++idx]=i;
			phi[i]=i-1;
		}
		for(int j=1;j<=idx&&prime[j]<=n/i;j++)
		{
			isprime[p[j]*i]=true;
			if(i%prime[j]==0)//p^2|n
			{
				phi[i*prime[j]]=phi[i]*prime[j];
				break;
			}
			phi[i*p[j]]=phi[i]*(prime[j]-1);//p|n
		}
	}
}