定义
ϕ
(
n
)
\phi(n)
ϕ(n) 表示 [1,n] 中与 n 互质的数的个数。 由算术基本定理可得:
ϕ
(
n
)
=
n
⋅
p
1
−
1
p
1
⋅
p
2
−
1
p
2
⋅
.
.
.
⋅
p
n
−
1
p
n
\phi(n) = n\cdot\frac{{p_1}-1}{p_1} \cdot \frac{{p_2}-1}{p_2}\cdot...\cdot\frac{{p_n}-1}{p_n}
ϕ(n)=n⋅p1p1−1⋅p2p2−1⋅...⋅pnpn−1
ϕ
(
n
)
=
n
⋅
∏
p
n
(
1
−
1
p
)
(
p
为
质
数
)
\phi(n) = n\cdot \prod_{\frac{p}{n}}^{}{\left( 1-\frac{1}{p} \right)}(p 为质数)
ϕ(n)=n⋅np∏(1−p1)(p为质数)
证明 设
p
1
,
p
2
.
.
.
p
m
p_1,p_2...p_m
p1,p2...pm 为 n 的质因子,则易知,对于任意
p
i
p_i
pi , 其倍数有 :
2
p
i
,
3
p
i
.
.
.
n
p
i
2p_i,3p_i...\frac{n}{p_i}
2pi,3pi...pin 当 n 有多个质数时,遵循容斥原理,约数个数为:
N
−
(
N
p
1
+
N
p
2
+
.
.
.
+
N
p
m
)
+
(
N
p
1
∗
p
2
+
N
p
1
∗
p
3
+
.
.
.
+
N
p
m
−
1
∗
p
m
)
+
.
.
.
.
.
.
+
(
−
1
)
m
+
1
∗
N
p
1
∗
p
2
∗
.
.
.
∗
p
m
−
1
∗
p
m
)
N-(\frac{N}{p_1}+\frac{N}{p_2}+...+\frac{N}{p_m})+(\frac{N}{p_1*p_2}+\frac{N}{p_1*p_3}+...+\frac{N}{p_{m-1}*p_m})+......+\left( -1 \right)^{m+1}*\frac{N}{p_1*p_2*...*p_{m-1}*p_m})
N−(p1N+p2N+...+pmN)+(p1∗p2N+p1∗p3N+...+pm−1∗pmN)+......+(−1)m+1∗p1∗p2∗...∗pm−1∗pmN) 合并化简后:
ϕ
(
n
)
=
n
⋅
∏
p
n
(
1
−
1
p
)
(
p
为
质
数
)
\phi(n) = n\cdot \prod_{\frac{p}{n}}^{}{\left( 1-\frac{1}{p} \right)}(p 为质数)
ϕ(n)=n⋅np∏(1−p1)(p为质数)
欧拉函数的性质及推论(证明结合算术基本定理即可证明)
对于x大于1,区间**[1,x]中与n**互质的数的和为:
n
∗
ϕ
(
n
)
2
\frac{n*\phi(n)}{2}
2n∗ϕ(n)
若a,b互质,则有:
ϕ
(
a
∗
b
)
=
ϕ
(
a
)
∗
ϕ
(
b
)
\phi(a*b) = \phi(a)*\phi(b)
ϕ(a∗b)=ϕ(a)∗ϕ(b)
求解某数的欧拉函数
分解质因数法
由于
ϕ
(
n
)
\phi(n)
ϕ(n) 表示 [1,n] 中与 n 互质的数的个数,因此只需要对 n 进行质因数分解再带入公式即可求出
ϕ
(
n
)
\phi(n)
ϕ(n)。
代码
intget_phi(int x){int ans = x;for(int i =2; i <= x / i; i++){if(n%i ==){x = ans / i *(i -1);// 利用公式(pi-1)/piwhile(x%i ==0)
x /= i;}}if(x>1)// 此时的 x 为 x 的最大质因数
ans = ans / x *(x +1);return res;}