欧拉函数
欧拉函数是小于 x x x的整数中与 x x x互质的数的个数,一般用 φ ( x ) \varphi(x) φ(x)表示。特殊的, φ ( 1 ) = 1 \varphi(1)=1 φ(1)=1。
欧拉函数计算公式
φ
(
x
)
=
{
x
∏
i
=
1
n
(
1
−
1
p
i
)
,
若
n
>
1
1
                          
,
若
n
=
1
\varphi(x)=\left\{\begin{array}{cc}x\prod^{n}_{i=1}(1- \frac{1}{p_i}),若n>1\\1\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:,若n=1\end{array}\right.
φ(x)={x∏i=1n(1−pi1),若n>11,若n=1
其中
p
1
,
p
2
,
⋯
,
p
n
p_1,p_2,\cdots ,p_n
p1,p2,⋯,pn 为
x
x
x的所有质因数
,
x
,x
,x是正整数。
附上代码:
inline ll phi(ll n) {
if (n == 1) return 1;
ll ans = n, m = sqrt(n);
for (register ll i = 2; i <= m; i++)
if (n % i == 0) {
ans = ans / i * (i - 1);
while (n % i == 0) n /= i;
}
if (n > 1) ans = ans / n * (n - 1);
return ans;
}