- gf24118 的博客
GF2025C2数论4
- 2025-8-4 16:45:53 @
哈哈哈还是数论
这个系列到4了dxd的责任(bushi)
请先阅读[前言]后再阅读本博客
前言
积性函数
定义
在数论中,若函数 满足 ,且 对任意互质的 , 都成立,则 为 积性函数。
在数论中,若函数 满足 且 对任意的 , 都成立,则 为 完全积性函数。
性质
若 和 均为积性函数,则以下函数也为积性函数:
$$\begin{aligned} h(x)&=f(x^p)\\ h(x)&=f^p(x)\\ h(x)&=f(x)g(x)\\ h(x)&=\sum_{d\mid x}f(d)g\left(\dfrac{x}{d}\right) \end{aligned} $$对正整数 ,设其唯一质因数分解为 ,其中 为质数。
若 为积性函数,则有 。
若 为完全积性函数,则有 。
例子
- 单位函数:。(完全积性)
- 恒等函数: , 通常简记作。(完全积性)
- 常数函数:。(完全积性)
- 除数函数: 。 通常简记作 或 , 通常简记作 。
- 欧拉函数:。
- 莫比乌斯函数:$\mu(n)=\begin{cases}1&n=1\\0&\exists d>1,d^{2}\mid n\\(-1)^{\omega(n)}&\text{otherwise}\end{cases}$,其中 表示 的本质不同质因子个数。
铺垫完毕,接下来是正题:
欧拉函数
定义
欧拉函数(Euler's totient function),即 ,表示的是小于等于 和 互质的数的个数。 比如说 。 当 是质数的时候,显然有 。
性质
- 欧拉函数是积性函数。
即对任意满足 的整数 ,有 。
特别地,当 是奇数时 。
- 。
===================================
证明
利用莫比乌斯反演相关知识可以得出。
也可以这样考虑:如果 ,那么。
如果我们设 表示 的数的个数,那么 。
根据上面的证明,我们发现,,从而。注意到约数和 具有对称性,所以上式化为 。
=====================================
-
若,其中 是质数,那么 。 (根据定义可知)
-
由唯一分解定理,设 ,其中 是质数,有 $\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}$。
=====================================
证明
引理:设 为任意质数,那么。
证明:显然对于从 1 到 的所有数中,除了 个 的倍数以外其它数都与 互素,故 ,证毕。
接下来我们证明 $\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}。由唯一分解定理与 \varphi(x) $函数的积性
$$\begin{aligned} \varphi(n) &= \prod_{i=1}^{s} \varphi(p_i^{k_i}) \\ &= \prod_{i=1}^{s} (p_i-1)\times {p_i}^{k_i-1}\\ &=\prod_{i=1}^{s} {p_i}^{k_i} \times(1 - \frac{1}{p_i})\\ &=n~ \prod_{i=1}^{s} (1- \frac{1}{p_i}) &\square\end{aligned}$$===================================
- 对任意不全为 的整数 ,,$\varphi(mn)\varphi(\gcd(m,n))=\varphi(m)\varphi(n)\gcd(m,n)$。 可由上一条直接计算得出。
实现:
c++代码:
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;
}
py代码:
import math
def euler_phi(n):
ans = n
for i in range(2, math.isqrt(n) + 1):
if n % i == 0:
ans = ans // i * (i - 1)
while n % i == 0:
n = n // i
if n > 1:
ans = ans // n * (n - 1)
return ans