定义:
1-n中与n互质的数的个数被称为欧拉函数,记作 φ ( n ) φ(n) φ(n)
欧拉函数的性质:
1.
∀
n
>
1
\forall n>1
∀n>1,
1
−
n
1-n
1−n中与n互质的数的和为
n
∗
φ
(
n
)
/
2
n*φ(n)/2
n∗φ(n)/2
2.若
a
,
b
a,b
a,b互质,则
φ
(
a
b
)
=
φ
(
a
)
φ
(
b
)
φ(ab)=φ(a)φ(b)
φ(ab)=φ(a)φ(b)
3.若
f
f
f是积性函数,且在算术基本定理中
n
=
∏
i
=
1
m
p
i
c
i
n=\prod_{i = 1}^{m}p_i^{c_i}
n=∏i=1mpici,则
f
(
n
)
=
∏
i
=
1
m
f
(
p
i
c
i
)
f(n)=\prod_{i = 1}^{m}f(p_i^{c_i})
f(n)=∏i=1mf(pici)
4.设
p
p
p为质数,若
p
∣
n
p|n
p∣n且
p
2
∣
n
p^2|n
p2∣n,则
φ
(
n
)
=
φ
(
n
/
p
)
∗
p
φ(n)=φ(n/p)*p
φ(n)=φ(n/p)∗p
5.设
p
p
p为质数,若
p
∣
n
p|n
p∣n但
p
2
∤
n
p^2\not|n
p2∣n,则
φ
(
n
)
=
φ
(
n
/
p
)
∗
(
p
−
1
)
φ(n)=φ(n/p)*(p-1)
φ(n)=φ(n/p)∗(p−1)
6.
∑
d
∣
n
φ
(
d
)
=
n
\sum_{d|n}φ(d)=n
∑d∣nφ(d)=n
证明过程挖坑!
求欧拉函数的代码
类似于埃氏筛的思想
出于种种原因
我不会证明
所以继续挖坑!
void oula(int n)
{
for(int i=2;i<=n;i++)
phi[i]=i;
for(int i=2;i<=n;i++)
if(phi[i]==i)
for(int j=i;j<=n;j+=i)
phi[j]=phi[j]/i*(i-1);
}