欧拉函数
定义
对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)
性质
最近比较忙,待补充
公式
ϕ
(
n
)
=
n
∏
i
=
1
n
(
1
−
1
p
i
)
\phi(n)=n\prod_{i=1}^n(1-\frac{1}{p_i})
ϕ(n)=n∏i=1n(1−pi1)
埃氏筛求解欧拉函数
void euler(int n)
{
for (int i = 1; i <= n; i++)
phi[i] = i;
for (int i = 2; i <= n; i++) {
if (phi[i] == i) {//i是质数
for (int j = i; j <= n; j += i)
phi[j] = phi[j] / i * (i - 1);
}
}
}
欧拉筛求解欧拉函数
void geteuler(int n) {
phi[1] = 1;
for (int i = 2; i <= n; i++) {
if (!p[i]) {
p[++p[0]] = i;
phi[i] = i - 1;
}
for (int j = 1; j <= p[0] && i <= n / p[j]; j++) {
p[i * p[j]] = 1;
if (i % p[j] == 0) {
phi[i * p[j]] = phi[i] * p[j];
break;
}
else {
phi[i * p[j]] = phi[i] * (p[j] - 1);
}
}
}
}