5欧拉函数
欧拉函数
定义
欧拉函数(Euler's totient function),即 \(\varphi(n)\),表示的是小于等于 n 和 n 互质的数的个数。
比如说 \(\varphi(1) = 1\)。
当 n 是质数的时候,显然有$ \varphi(n) = n - 1$。
性质
- 欧拉函数是积性函数
对于任意的\(gcd(a,b)=1\)的整数a和b,有\(\varphi(ab)=\varphi(a)\varphi(b)\)
特别地,当 n 是奇数时 \(\varphi(2n) = \varphi(n)\)。
- \(n = \sum_{d \mid n}{\varphi(d)}\)
- 若$ n = p^k\(,其中 p 是质数,那么\) \varphi(n) = p^k - p^{k - 1}$。
- 由唯一分解定理,设 \(n = \prod_{i=1}^{s}p_i^{k_i}\),其中 p_i 是质数,有 \(\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}\)。
- 对任意不全为 0 的整数 m,n,\(\varphi(mn)\varphi(\gcd(m,n))=\varphi(m)\varphi(n)\gcd(m,n)\)。可由上一条直接计算得出。
实现
int euler_phi(int n)
{
int ans = n;
for(int i = 2; i * i <= n; 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;
}

浙公网安备 33010602011771号