【学习笔记】欧拉函数
几个基本的定义
数论函数
定义域为正整数的函数
积性函数
(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)
- 学习笔记:欧拉函数
- 「欧拉函数」学习笔记
- 欧拉函数学习笔记
- 数论学习笔记 欧拉函数 (一些性质和运用)内置杜教筛
- 数论学习笔记之欧拉函数
- 数论学习笔记 欧拉函数(一些性质和运用)+杜教筛
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
- Python量化交易学习笔记(7)——第一个策略回测程序v5
- Oracle 11g 学习笔记 (2)
- 西门子 S7-300 学习笔记(二)——单机架扩展组态和多机架扩展组态
- 第128讲:Hadoop集群管理工具dfsadmin实战详解学习笔记
- 马哥linux学习笔记:locate,find命令总结
- python学习笔记(virtualenv下载安装)
- 学习笔记 2016/1/28 how to use git (3)
- Ferris教程学习笔记:js示例2.4 鼠标移入改变样式,鼠标移出恢复
- ARM Cortex-M0+Kinetis L系列学习笔记_MKL25Z4.h
- OPENGL学习笔记
- HTML&CSS基础学习笔记1.17-表格的头部与尾部
- linux_尚学堂_学习笔记
- 《Android 源码设计模式解析与实战》学习笔记