数论函数及定理

数论函数及定理

数论函数

又称算数函数。

指输入一个正整数 \(n\),输出一个数(我们只讨论整数)的函数 \(f(n)\)

例如:

\[\begin{aligned} \epsilon(n) & = [n=1] \\ 1(n) & = 1\\ id(n) & = n\\ id^k(n) & = n^k\\ d(n) & = \sum_{d\mid n} 1\\ \sigma(n) & = \sum_{d \mid n} d \end{aligned} \]

狄利克雷卷积

对于数论函数 \(f(x),g(x)\),定义:

\[f(x) * g(x) = \sum_{d \mid x} f(d) g(\frac{x}{d}) \]


一些性质:

  1. 交换律:\(f * g = g* f\)
  2. 结合律:\((f*g)*h = f*(g*h)\)
  3. 分配律:\(f*(g+h) = f*g + f*h\)
  4. 单位元:\(f * \epsilon = f\)
  5. 恒等卷积:\(1*1 = d\)\(d(x)\) 是约数个数函数)

积性函数

OI Wiki 链接。

定义

对于函数 \(f(x)\),满足 \(f(1)=1\)\(\forall \gcd(a,b)=1, f(ab)=f(a)f(b)\)。则 \(f(x)\) 是积性函数。

如果对所有 \(a,b\) 都成立,\(f(x)\) 就是完全积性函数。

例子

完全积性函数:\(\epsilon,1,id,id^k\)

非完全积性函数:\(\varphi,\mu,d\)

性质

  1. \(f,g\) 为积性函数,则 \(f*g\) 为积性函数。

    懒得证。

欧拉函数

定义

欧拉函数 \(\varphi(x)\) 等于 \(\le x\) 且与 \(x\) 互质的数的个数。比如 \(\varphi(1)=1,\varphi(6)=2\)

性质和公式

  1. \(\varphi(x)\) 是积性函数。

\[\varphi(ab) = \varphi(a) \varphi(b) \]

  1. 推论

\(n\) 质因数分解,得到 \(n = \sum_{i=1}^s p_i^{c_i},c_i>0\)

\[\varphi(n) = \prod_{i=1}^s \varphi(p_i^{c_i}) \]

积性函数的性质。

  1. 欧拉反演。

\[\varphi * 1 = id \]

等价于:

\[n = \sum_{x\mid n} \varphi(x) \]

证明:每个 \(\varphi(x) 都会筛掉 \gcd(y,n) = x\)\(y\)

  1. 引理。

\(p\) 是质数。

\[\varphi(p^k) = p^k - p^{k-1} \]

由定义可证。

  1. 计算用公式。

\[\varphi(n) = n \times \prod_{i=1}^s \frac{p_i-1}{p_i} \]

显然 \(c_i\) 不影响 \(\varphi(n)\)

\[\begin{aligned} \varphi(n) & = \prod_{i=1}^s \varphi(p_i^{c_i})\\ & = \prod_{i=1}^s p_i^{c_i} - p_i^{c_i-1} \\ & = \prod_{i=1}^s p_i(1-\frac{1}{p_i}) \\ & = n \times \prod_{i=1}^s \frac{p_i-1}{p_i} \end{aligned} \]

线性筛求欧拉函数

线性筛的时候我们会求出每个数的最小质因数 \(pri_n\)

\(n' = \frac{n}{pri_n}\)

  • \(pri_n \mid n'\)

    \(n\)\(n'\) 的质因子种类相同,只是 \(n\) 多一个 \(pri_n\) 罢了。

    根据欧拉函数的计算用公式,得到 \(\varphi(n) = pri_n \varphi(n')\)

  • \(pri_n \nmid n'\)

    此时 \(n\)\(n'\) 多一种质因子 \(pri_n\),数量是多一个,那么有 \(\varphi(n) = (pri_n - 1) \varphi(n')\)

莫比乌斯函数

参考 OI Wiki莫比乌斯反演

定义

莫比乌斯函数 \(\mu(n)\) 定义为:

\[\mu(n) = \begin{cases} 1\ (n=1)\\ 0 \ (n 有平方因子)\\ (-1)^k \ (k 是 n 的因子个数) \end{cases} \]

性质

  1. \(\mu(n)\) 是积性函数。

  2. 最常用性质。

\[\mu * 1 = \epsilon \]

证明

\[\sum_{d \mid n} \mu(d) = [n=1] \]

\(n\) 质因数分解:\(n = \sum_{i=1}^s p_i^{c_i}\)

\(\sum_{d \mid n} \mu(d) = \sum_{k=0}^s \binom{s}{k} (-1)^k = (1+(-1))^s = [s=0]\)

  1. 神奇的性质。

引理:\(\varphi = \mu * id\)

\[\sum_{d \mid n} \frac{\mu(d)}{d} = \frac{\varphi(n)}{n} \]

线性筛求莫比乌斯函数

void init_mu() {
	mu[1]=1;
	rep(i,2,Max) {
		if(!vi[i]) mu[i]=-1, p[++p0]=i;
		for(int j=1;j<=p0 && i*p[j]<=n;j++) {
			vi[i*p[j]]=1;
			if(i%p[j]==0) break;
			mu[i*p[j]]=-mu[i];
		}
	}
}

莫比乌斯反演

约数版本:

如果有函数 \(F(n)\)\(f(n)\) 满足:

\[F(n) = \sum_{d \mid n} f(d) \]

那么有:

\[f(n) = \sum_{d \mid n} \mu(d) F(\frac{n}{d}) \]


倍数版本:

如果有函数 \(F(n)\)\(f(n)\) 满足:

\[F(n) = \sum_{n \mid d} f(d) \]

那么有:

\[f(n) = \sum_{n \mid d} \mu(\frac{d}{n}) F(d) \]


约数版本证明:

我们知道 \(\mu * 1 = \epsilon\)

\[\begin{aligned} F & = f * 1\\ F * \mu & = f * 1 * \mu \\ F * \mu & = f \end{aligned} \]

经验

P2522 [HAOI2011] Problem b 板题

容斥一下,变成每次询问求 \(O(1)\)\(f(k)=\sum_{i=1}^a \sum_{j=1}^b [\gcd(i,j)=k]\)

我们知道求 \(F(k)\) 表示 \(i\le a,j\le b,k\mid \gcd(i,j)\) 是好求的,等于 \(\lfloor \frac{a}{k} \rfloor \lfloor \frac{b}{k} \rfloor\)

然后又有 \(F(k) = \sum_{k \mid d} f(d)\),根据莫比乌斯反演公式,得到 \(f(n) = \sum_{k\mid d} \mu(\frac{d}{k}) F(d)\)

\[ans = f(k) = \sum_{k \mid d} \mu(\frac{d}{k}) F(d) = \sum_{t=1}^{\min(\lfloor \frac{a}{k} \rfloor,\lfloor \frac{b}{k} \rfloor)} \mu(t) \lfloor \frac{a}{kt} \rfloor \lfloor \frac{b}{kt} \rfloor \]

然后整除分块一下,单次询问 \(O(\sqrt{n})\)

块筛

简介

数论函数 \(f\) 的前缀和记为 \(S_f\)

\(f\) 的块筛指的是 \(S_f\) 在所有 \(\lfloor \frac{n}{k} \rfloor\) 处的点值。

根据根号分治的知识,\(|\{\lfloor \frac{n}{k} \rfloor \} | \le 2 \sqrt{n}\)

块筛卷积

给定 \(A,B\) 的块筛,求 \(C = A * B\) 的块筛。

\[S_{C}(n) = \sum_{i=1}^n A(i) S_{B}(\lfloor \frac{n}{i} \rfloor) \]

证明很简单。

然后我们进行整除分块,按照 \(\lfloor \frac{n}{i} \rfloor\) 分块。于是只需要 \(A,B\) 的块筛的信息就可以求出 \(C\) 的块筛的信息。

于是块筛卷积是封闭的。

枚举 \(n\),然后根号分治。时间复杂度没有那么直观,是 \(O(\sum_{k=1}^{\sqrt{N}} k^{\frac{1}{2}} + (\frac{N}{k}^{\frac{1}{2}} ))\)。近似成无限积分,得到是 \(O(N^{\frac{3}{4}})\)

具体地,我们先枚举 \(\le n\) 的总共 \(\sqrt{n}\) 的要求的块筛下标。若 \(k \le \sqrt{n}\),就根号分治 \(A\),否则根号分治 \(B\)

如果我们对下标 \(\le n^{\frac{2}{3}}\) 的块筛,我们使用线性筛直接线性求出。对于 \(\ge\) 的部分呢,我们使用块筛卷积 \(O(\sum_{k=1}^{n^{\frac{1}{3}}}(\frac{n}{k})^{\frac{1}{2}})\),大概也是 \(O(n^{\frac{2}{3}})\)。因此总复杂度可以优化到 \(O(n^{\frac{2}{3}})\)

杜教筛

对于一个数论函数 \(f(x)\),使用 \(O(n^{\frac{2}{3}})\) 的时间复杂度求 \(\sum_{i=1}^n f(i)\),即 \(S_f(n)\)

我们知道 \(S_{f*g}(n) = \sum_{i=1}^n g(i)S_f(\lfloor \frac{n}{i}\rfloor)\)。移一下项:

\[S_f(n) = S_{f*g}(n) - \sum_{i=2}^n g(i)S_f(\lfloor \frac{n}{i}\rfloor) \]

P4213 【模板】杜教筛

计算:

\[ans_1=\sum_{i=1}^n\varphi(i) \]

\[ans_2=\sum_{i=1}^n \mu(i) \]

\(1 \leq n \lt 2^{31}\)

代入公式,得到:

\[\begin{aligned} ans_1 & = \frac{n(n+1)}{2} - \sum_{i=2}^n S_{\varphi}(\lfloor \frac{n}{i}\rfloor) \\ ans_2 & = 1 - \sum_{i=2}^n S_{\mu}(\lfloor \frac{n}{i}\rfloor) \end{aligned} \]

posted @ 2025-01-16 15:05  wing_heart  阅读(41)  评论(0)    收藏  举报