您的位置:首页 > 其它

【学习笔记】欧拉函数

2022-05-19 20:14 447 查看

几个基本的定义

数论函数

定义域为正整数的函数

积性函数

(1)若 a,b 互质,则 f(ab) = f(a)f(b) (2)对于一个正整数 n,将其写为 n = \prod p_i^{k_i},则 f(n) = f(p_i^{k_i})f(\frac{n}{p_i^{k_i}}) = \prod f(p_i^{k_i})

完全积性函数

在任意条件下,都满足 f(ab) = f(a)f(b)。

欧拉函数

基本定义

我们定义 \varphi(n) 为欧拉函数,其定义为不超过 n 且与 n 互质的数的个数。

基本性质

性质一

设 n = \prod p_i^{k_i},那么 \varphi(n) = n \prod (1 - \dfrac{1}{p_i})

性质二

若 a,b 互质,那么 \varphi(ab) = \varphi(a)\varphi(b),即欧拉函数是一个积性函数。 可以通过性质一来证明。

性质三

\varphi(p^k) = p^k - p^{k-1} = (p-1)p^{k-1} 可以通过性质一来证明。

性质四

若 n 为奇数,那么存在 \varphi(2n) = \varphi(n) 可以用欧拉函数的积性来证明。

性质五

若 n 大于 2,那么存在 \varphi(n) 为偶数。 所有与 n 互质的数的和为 \dfrac{\varphi(n)}{2}n ,因为与 n 互质的数都是成对存在的,也就是说若存在 i 与 n 互质,那么 n-i 与 n 也互质,以这个性质就可以得出上文的那个式子

性质六

若 n 为质数,那么 \varphi(n) = n-1。 这个是非常显然的。

性质七

\sum_{d|n} \varphi(d) = n 很有用的一个性质。

线性筛求欧拉函数

(1)若 n 为质数,根据性质七就好 (2)若 i 与 prime_j 不互质,\varphi(i \times prime_j) = \varphi(i) \times prime_j,这个可以通过性质二、三来证明 (3)若 i 与 prime_j 互质,\varphi(i \times prime_j) = \varphi(i)\varphi(prime_j) = (p-1)\varphi(i),可以根据性质二、六证明 代码实现:

点击查看代码
void Phi(long long mx){
phi[1] = 1;
for(long long i=2; i<=mx; i++){   //切记切记 i 从 2 开始,从 1 就会有大错
if(!no_pri[i]){
pri[++size] = i;
phi[i] = i-1;
}
for(long long j=1; j<=size && i * pri[j] <=mx; j++){
no_pri[i * pri[j]] = true;
if(i % pri[j] == 0){
phi[i * pri[j]] = phi[i] * pri[j];
break;
}
else{
phi[i * pri[j]] = phi[i] * (pri[j] - 1);
}
}
}
}

代码解释: pri_i 表示第 i 个质数,phi_i 表示 \varphi(i)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: