定义
φ ( n ) \varphi (n) φ(n)表示 [ 1 , n ] [1,n] [1,n]中与 n n n互质的数的个数。
性质
φ ( p ) = p − 1 , p ∈ P \varphi (p)=p-1,\ p\in \mathbb {P} φ(p)=p−1, p∈P
φ ( n ) = n ∏ i = 1 m p i − 1 p i \varphi (n)=n\prod_{i=1}^{m} \frac{p_i-1}{p_i} φ(n)=ni=1∏mpipi−1
线性筛(质数与欧拉函数)
void init()
{
memset(isp,1,sizeof(isp));
isp[1]=0;
phi[1]=1;
for(int i=2;i<N;i++)
{
if(isp[i])
{
p[++np]=i;
phi[i]=i-1;
}
for(int j=1;j<=np&&i*p[j]<N;j++)
{
ll x=i*p[j];
isp[x]=0;
if(i%p[j]!=0)phi[x]=phi[i]*(p[j]-1);
else
{
phi[x]=phi[i]*p[j];
break;
}
}
}
}
大众的方法
在一大坨式子中,枚举公因数 d d d。
例子
求 ∑ i = 1 n g c d ( i , n ) \sum _{i=1}^{n}gcd(i,n) i=1∑ngcd(i,n)
洛谷P2303 Longge的问题
考虑枚举公因数 d d d,因为显然的 1 ≤ d ≤ n 1 \le d \le n 1≤d≤n
那么原式转化为
∑
d
∣
n
d
∑
i
=
1
n
[
g
c
d
(
i
,
n
)
=
d
]
\sum_{d|n}d\sum_{i=1}^{n}[gcd(i,n)=d]
d∣n∑di=1∑n[gcd(i,n)=d]
艾弗森括号内除以
d
d
d
∑
d
∣
n
d
∑
i
=
1
n
d
[
g
c
d
(
i
,
n
d
)
=
1
]
\sum_{d|n}d\sum_{i=1}^{\frac{n}{d}}\left[gcd\left(i,\frac {n}{d}\right)=1\right]
d∣n∑di=1∑dn[gcd(i,dn)=1]
欧拉函数往里面一代
∑
d
∣
n
d
⋅
φ
(
n
d
)
\sum_{d|n}d \cdot \varphi \left(\frac{n}{d}\right)
d∣n∑d⋅φ(dn)