莫比乌斯反演
m256i
·
·
算法·理论
\frak{Praefatio} 前言
本文写于 2023 年 11 月。当时正是 OI 挂飞退役时期,想着总要在 OI 留下点自己的痕迹吧,于是就写了这篇将近 40000 字的文章。
我第一次接触“莫比乌斯反演”这个词是在初一的寒假。当时看了 OI Wiki 和网上一些博客,但是都觉得太复杂看不懂。
直到某次上课推 P1447(当时还是紫,后来降蓝了)式子的时候才意识到“这不就是 \varphi*\mathbf 1=\mathrm{id} 吗”,这才正式开始学习。
在那一个学期里我又补了一堆数学知识,暑假买了《具体数学》。当时觉得自己做了一堆紫黑很 nb,直到后来意识到我除了数学什么都不会,而数学也只会套路做不了思维。
所以初二开始基本就没碰过这些了(OI 也没学过),直到初三开始花了三个月时间整理学习成果,写了几篇博客。
文章的公式(包括行内公式)为了观感舒服都用了 display 样式。
这篇文章的定位是入门和一点进阶,像 P5518 那种过于复杂的题目和某些算法优化要求过高的题目都不包括。选的题目都能用套路方式无脑解决。
文章对数论基础要求不高,但是要求掌握一些求和符号的处理。
积性函数是解析数论中很重要的工具,所以本文也选了一些估阶的题目。如果想要进一步学习可以参考 Apostol 的 Introduction to Analytic Number Theory(国内有影印版,中译本已绝版)。
原来准备写一些组合相关的,比如偏序集上的莫比乌斯反演,但是由于精力不足去年 12 月之后就没更新过。现在对一些表述进行微调之后就作为最终版本了。
这篇文章尽可能做到成体系,此外还包含了 von Mangoldt 函数之类一些小众的东西(虽然 OI 里基本不可能考)。另外注释里给出了人名的读法,这是我加的私货。
有的题目是自己出的,不能保证答案正确,如果有问题请在评论区指出。
希望能够通过这篇文章告诉 OIer:所谓莫比乌斯反演并非什么高级知识或者神秘技巧,而是极其自然的结论。
在这个对计算机人特殊的日子写下这篇前言。
m256i
2024.10.24
\frak{Pars\ A} 基础
\text{Chapter 1} 数论函数
1.1 定义
既然是数论那肯定是研究正整数的。把定义域为正整数(即 \mathbb N^+ 或 \mathbb N^*,也有人写成 \mathbb Z_{>0})的函数叫做数论函数\text{(number-theoretic function)}或者算术函数\text{(arithmetic function)}。定义域在实数或者复数的函数也可以限制到 \mathbb N 上得到一个数论函数。对值域没有限制,只要是个复数都行。
方便起见,定义数论函数在 0 处的值为 0。
对于数论函数 f,当 p \perp q 时满足 f(pq)=f(p)+f(q) 那么称 f 是加性函数\text{(additive function)},满足 f(pq)=f(p)f(q) 称 f 是积性函数\text{(multiplicative function)}。如果 p,q 不互质式子仍然成立的话叫完全\text{(completely)}加性函数和完全积性函数。
一些性质是显然的,比如积性函数有 f(1)=1(一般不认为 f(n)=0 是积性函数,即使它满足积性函数的定义),加性函数有 f(0)=0,完全积性函数有 f(n^k)=f^k(n) 之类的。
另外积性函数的乘积也是积性函数,加性函数的和同理,证明也是显然的。
此外还容易证明,假如积性函数 f 和 g 满足以下条件中的任意一个:
-
- 当 p \perp q 时 g(p) \perp g(q)。
则复合函数 (f \circ g)(n)=f(g(n)) 也是积性函数。
1.2 狄利克雷卷积
现在有两个数论函数 f 和 g,定义 f 和 g 的狄利克雷卷积\text{(Dirichlet}^{[1]}\text{ convolution)}(下文中卷积如果不加说明就是狄利克雷卷积)为:
(f*g)(n)=\sum_{xy=n}f(x)g(y)=\sum_{d \mid n}f(d)g\left(\dfrac{n}{d}\right)
根据定义显然满足交换律,对结合律来说 (f*g)*h 和 f*(g*h) 都等于 \displaystyle\sum_{xyz=n}f(x)g(y)h(z) 所以也成立。
可以发现 \varepsilon(n)=[n=1] 是一个单位元,现在观察逆元在什么情况下存在。n=1 时 (f*g)(1)=f(1)g(1),所以 f(1) 不能等于 0(因此加性函数不存在逆元)。对于其他情况:
\begin{aligned}
\varepsilon&=f*g\\
[n=1]&=\sum_{d \mid n}f(d)g\left(\dfrac{n}{d}\right)\\
0&=f(1)g(n)+\sum_{\substack{d \mid n\\d>1}}f(d)g\left(\dfrac{n}{d}\right)\\
f(1)g(n)&=-\sum_{\substack{d \mid n\\d>1}}f(d)g\left(\dfrac{n}{d}\right)\\
g(n)&=-\dfrac{1}{f(1)}\sum_{\substack{d \mid n\\d>1}}f(d)g\left(\dfrac{n}{d}\right)
\end{aligned}
所以所有 f(1) \ne 0 的函数都有狄利克雷逆元,记作 f^{-1},即 f(1) \ne 0 的数论函数和卷积运算构成一个交换群。
对于 g(1) \ne 0 的函数定义狄利克雷除法 f/g=f*g^{-1},关系和一般的乘除法之间是类似的。
证明一个重要的性质:积性函数对卷积运算封闭。换种方式表述就是下面的定理:
例 1.1 (具体数学练习 4.33)证明:两个积性函数的卷积仍然是积性函数。
也就是证明 p \perp q 时有 (f*g)(pq)=(f*g)(p) \times (f*g)(q)。
\begin{aligned}
(f*g)(pq)&=\sum_{d \mid pq}f(d)g\left(\dfrac{pq}{d}\right)\\
&=\sum_{x \mid p,y \mid q}f(xy)g\left(\dfrac{pq}{xy}\right)\\
&=\sum_{x \mid p,y \mid q}f(x)f(y)g\left(\dfrac{p}{x}\right)g\left(\dfrac{q}{y}\right)\\
&=\sum_{x \mid p}f(x)g\left(\dfrac{p}{x}\right)\sum_{y \mid q}f(y)g\left(\dfrac{q}{y}\right)\\
&=(f*g)(p) \times (f*g)(q)
\end{aligned}
事实上积性函数对逆元同样封闭。
例 1.2 证明:积性函数的狄利克雷逆元仍是积性函数。
为了完整这里放出一个冗长的证明。后面会给出基于代数的更简单的证明。
首先有 f(1)=f^{-1}(1)=1。假设 pq \ne 1,现在就是证明 p \perp q 时有 f^{-1}(pq)=f^{-1}(p)f^{-1}(q)。考虑数学归纳法(强归纳),假设结论对 n<pq 成立,那么:
\begin{aligned}
f^{-1}(pq)&=-\sum_{\substack{d \mid pq\\d \ne 1}}f(d)f^{-1}\left(\dfrac{pq}{d}\right)\\
&=-\sum_{\substack{x \mid p,y \mid q\\xy \ne 1}}f(xy)f^{-1}\left(\dfrac{pq}{xy}\right)\\
&=-\sum_{\substack{x \mid p,y \mid q\\xy \ne 1}}f(x)f(y)f^{-1}\left(\dfrac{p}{x}\right)f^{-1}\left(\dfrac{q}{y}\right)\\
&=f(1)f(1)f^{-1}(p)f^{-1}(q)-\sum_{x \mid p,y \mid q}f(x)f(y)f^{-1}\left(\dfrac{p}{x}\right)f^{-1}\left(\dfrac{q}{y}\right)\\
&=f^{-1}(p)f^{-1}(q)-\sum_{x \mid p}f(x)f^{-1}\left(\dfrac{p}{x}\right)\sum_{y \mid q}f(y)f^{-1}\left(\dfrac{q}{y}\right)\\
&=f^{-1}(p)f^{-1}(q)-\varepsilon(p)\varepsilon(q)\\
&=f^{-1}(p)f^{-1}(q)-\varepsilon(pq)\\
&=f^{-1}(p)f^{-1}(q)
\end{aligned}
所以积性函数和卷积运算同样构成交换群。
可以证明卷积对加法有分配律:f*h+g*h=(f+g)*h。
对于积性函数 f,g 和完全积性函数 h,容易证明乘法对卷积也有类似的分配律 (fh)*(gh)=(f*g)h(注意顺序和前面是反的)。这个性质有的时候可以节省大量计算贝尔级数的时间(甚至有时候没办法用贝尔级数做,比如例 7.1)。
1.3 常见数论函数
很多是基于狄利克雷卷积定义的。另外容易发现前面的单位元 \varepsilon(n) 是个完全积性函数。
一些加性函数:
- 不同质因子个数:\omega(n)(作用和名字相同)
- 质因子个数:\Omega(n)(同上,完全加性)
- 对数函数:\log n(完全加性,从这里可以看出数论函数的值域并不一定是整数)
一些积性函数:
- 常数函数:\mathbf 1(n)=1(完全积性)
- 恒等函数:\mathrm{id}(n)=n(完全积性)
- 幂函数:\mathrm{id}_k(n)=n^k(因此 \mathrm{id} 就是 \mathrm{id}_1)(完全积性)
- 约数个数:\mathrm d=\mathbf 1*\mathbf 1(作用和名字相同)
- 约数和:\sigma=\mathrm{id}*\mathbf 1(同上)
- 约数函数:\sigma_k=\mathrm{id}_k*\mathbf 1:计算每个因子的 k 次方和(因此 \mathrm d 和 \sigma 就相当于 \sigma_0 和 \sigma_1)
- 欧拉函数\text{(Euler}^{[2]}\text{'s totient}^{[3]}\text{ function)}:\varphi(n) 为 [1..n] 中与 n 互质的整数个数。另外一种定义是 \varphi=\operatorname{id}/1,两种定义之间的互相转换都很容易。
- 莫比乌斯函数\text{(Möbius}^{[4]}\text{ function)}:\mu=\mathbf 1^{-1}
- 最大公约数:\gcd(n,k)(k 为定值)
- 判断互质:\chi_k(n)=[n \perp k]=[\gcd(n,k)=1](注意虽然 \gcd 不是完全积性但是这个是的)。用 \chi 是因为它其实是模 k 下的狄利克雷主特征\text{(Dirichlet principal character)}^{[5]}。
- 刘维尔函数\text{(Liouville}^{[6]}\text{ function)}:\lambda(n)=(-1)^{\Omega(n)}(完全积性)
另外定义差分 \Delta f(n)=f(n)-f(n-1) 和前缀和 \Sigma f(n)=\displaystyle\sum_{k=1}^nf(k)(沿用随机说话(一)的记号,和有限微积分符号不同),那么几个前缀和函数有特殊符号:
- 欧拉函数前缀和:\Phi=\Sigma\varphi
- 梅滕斯函数\text{(Mertens}^{[7]}\text{ function)}(莫比乌斯函数前缀和):\mathrm M=\Sigma\mu(一般用大写拉丁字母 Mm (em) 而不是希腊字母 Μμ (μῦ))
容易发现一些平凡的前缀和关系,比如 \Sigma\varepsilon=\mathbf 1,\Sigma \mathbf 1=\mathrm{id} 之类。
1.4 狄利克雷级数
众所周知普通生成函数乘法对应一般卷积,指数生成函数乘法对应二项卷积,那么有什么生成函数的乘法对应狄利克雷卷积吗?
可以想到 a^ma^n=a^{m+n} 对应加法,那么 a^nb^n=(ab)^n 对应乘法,考虑把变量 x 放到指数上。定义数论函数 f 的狄利克雷级数\text{(Dirichlet series)}或者狄利克雷生成函数\text{(Dirichlet generating function, DGF)}为:
\tilde F(x)=\sum_{k \ge 1}\dfrac{f(k)}{k^x}
容易证明 DGF 乘积对应 f 的狄利克雷卷积。
当 f 为积性函数时有欧拉乘积\text{(Euler product)}公式:
\tilde F(x)=\prod_{p \in \mathbb P}\sum_{k \ge 0}\dfrac{f(p^k)}{p^{kx}}
(\mathbb P 表示质数集合)
证明根据唯一分解定理是显然的(仅仅是形式上,实际上需要考虑收敛性问题,但是我们这里基本不会用到解析性质所以不去讨论)。
常数函数 \mathbf 1 的 DGF 是黎曼 ζ 函数\text{(Riemann}^{[8]}\text{ zeta function)}:
\zeta(s)=\sum_{n \ge 1}\dfrac{1}{n^s}=\prod_{p \in \mathbb P}\dfrac{1}{1-p^{-s}}
一些函数可以根据定义求出,比如 \varepsilon 的 DGF 就是 1,\mathrm{id} 的 DGF 是 \displaystyle\sum_{k \ge 1}\dfrac{k}{k^x}=\sum_{k \ge 1}\dfrac{1}{k^{x-1}}=\zeta(x-1)(类似方法可以得到 \mathrm{id}_k 的 DGF 是 \zeta(x-k))。
所以对于积性函数,只要处理乘积里面的内容就行。比如说对于莫比乌斯函数,我们有:
\tilde M(x)=\zeta^{-1}(x)=\prod_{p \in \mathbb P}\left(1-\dfrac{1}{p^s}\right)
而欧拉函数 \varphi=\mathrm{id}/\mathbf 1 的 DGF 就是 \dfrac{\zeta(x-1)}{\zeta(x)}。
用 DGF 确实可以得到积性函数之间的卷积关系,但是有种杀鸡用牛刀的感觉,有一种更简单的工具:贝尔级数。
1.5 贝尔级数
研究狄利克雷级数的经验告诉我们,积性函数重要的是它在质数幂处的值。现在考虑两个积性函数的卷积:
(f*g)(p^k)=\sum_{xy=p^k}f(x)g(y)=\sum_{x+y=k}f(p^x)f(p^y)
可以发现乘法卷积转化成了普通的加法卷积!按照这个思路,就有了贝尔级数\text{(Bell}^{[9]}\text{ series)}:
F_p(x)=\sum_{k \ge 0}f(p^k)x^k
这里把 f 的贝尔级数 F_p 记作 \mathcal Bf,这样 \mathcal B(f*g)=\mathcal Bf \times \mathcal Bg(可以发现这个式子长得很像群同态)。我们暂且把 \mathcal B 称为贝尔变换。
在处理时一般只考虑 x,而把 p 当成一个常数(这就是为什么写 F_p(x) 而不是 F(p,x))。
很容易得出一些常见函数的贝尔级数:
-
\varepsilon$:$1
-
\mathbf 1$:$(1-x)^{-1}
-
\mathrm{id}$:$(1-px)^{-1}
-
\mathrm{id}_k$:$(1-p^kx)^{-1}
-
\mathrm d$:$(1-x)^{-2}
-
\sigma_k$:$((1-p^kx)(1-x))^{-1}
-
\varphi$:$\dfrac{1-x}{1-px}
-
\mu$:$1-x
(以下为代数内容,与本文主题基本无关,可以跳过)
记 F_p \coloneqq \mathbb C^{\mathbb P} 为 \mathbb P \to \mathbb C 的函数集合,那么贝尔级数可以看成是 F_p 为系数且常数项为 1(常值函数)的形式幂级数,我们记作 B \coloneqq 1+xF_p[x]。容易验证 B 关于乘法构成一个交换群,这里记作 B^\times。
于是可以发现,贝尔变换恰好建立起了积性函数的卷积的代数对象到群 B^\times 之间的一个同态对应。并且 B 中任意一个级数都可以用类似方式还原成一个积性函数,因此它其实是一个同构!于是积性函数关于卷积构成交换群,因而继承了交换群的各种性质,比如结合律、交换律以及之前提到过的逆元存在性。
1.6 欧拉函数
这里提一下从欧拉函数的第一种定义得到卷积的方式。
首先假如你有 \dfrac{1}{n} 到 \dfrac{n}{n} 的分母为 n 的分数。以 n=12 为例:
\dfrac{1}{12}\ \dfrac{2}{12}\ \dfrac{3}{12}\ \dfrac{4}{12}\ \dfrac{5}{12}\ \dfrac{6}{12}\ \dfrac{7}{12}\ \dfrac{8}{12}\ \dfrac{9}{12}\ \dfrac{10}{12}\ \dfrac{11}{12}\ \dfrac{12}{12}
现在对每个分数进行约分:
\dfrac{1}{12}\ \dfrac{1}{6}\ \dfrac{1}{4}\ \dfrac{1}{3}\ \dfrac{5}{12}\ \dfrac{1}{2}\ \dfrac{7}{12}\ \dfrac{2}{3}\ \dfrac{3}{4}\ \dfrac{5}{6}\ \dfrac{11}{12}\ \dfrac{1}{1}
由于约分后的分母一定是 n 的因子,并且以每个 n 的因子为分母的最简分数一定都出现在序列里。所以:
\sum_{d \mid n}\varphi(d)=n
也就是 \varphi*\mathbf 1=\mathrm{id}。反向的推导会在后面叙述。
根据狄利克雷/贝尔级数都可以得出 \varphi(p^k) 的表达式(直接根据定义理解也很容易):
\varphi(p^k)=\begin{cases}1&k=0,\\p^k-p^{k-1}&k>0.\end{cases}
那么可以得到 \varphi(n) 关于 n 的质因子的表达式。设 n=\displaystyle\prod_{i}p_i^{k_i},那么有:
\varphi(n)=\prod_{i}\left(p_i^{k_i}-p_i^{k_i-1}\right)
又因为 p^k-p^{k-1}=\dfrac{p-1}{p}p^k,所以有另外一个表达式:
\varphi(n)=n\prod_{i}\dfrac{p_i-1}{p_i}
1.7 莫比乌斯函数
根据 DGF 或者贝尔级数都能得出 \mu(p^k) 的表达式:
\mu(p^k)=\begin{cases}1&k=0,\\-1&k=1,\\0&k>1.\end{cases}
所以:
\mu(n)=\begin{cases}0&\exists d>1,d^2 \mid n,\\(-1)^{\Omega(n)}&\text{otherwise.}\end{cases}
即 \mu(n) 当 n 含平方因子时为 0,否则等于 \lambda(n)。因此我们可以用 \mu^2(n) 判断 n 是否含平方因子。
这样对 \mu*\mathbf 1=\varepsilon 就有另一种理解。先来介绍一个前置问题:
例 1.3 给定集合 \mathbf S,求 \displaystyle\sum_{\mathbf T \subseteq \mathbf S}(-1)^{|\mathbf T|}。
一种方法是枚举 |\mathbf T|,这样答案就是 \displaystyle\sum_{k=0}^{|\mathbf S|}\dbinom{|\mathbf S|}{k}(-1)^k=(1-1)^{|\mathbf S|}=0^{|\mathbf S|}=[|\mathbf S|=0]=[\mathbf S=\varnothing]。
另一种方法是枚举 \mathbf S 的每个元素是否选取,答案 \displaystyle\sum_{q_1,q_2,\cdots,q_{|\mathbf S|} \in \{0,1\}}(-1)^{q_1+q_2+\cdots+q_{|\mathbf S|}}=\displaystyle\sum_{q_1,q_2,\cdots,q_{|\mathbf S|} \in \{0,1\}}(-1)^{q_1}(-1)^{q_2}\cdots(-1)^{q_{|\mathbf S|}}=\sum_{q_1=0}^1(-1)^{q_1}\sum_{q_2=0}^1(-1)^{q_2}\cdots\sum_{q_{|\mathbf S|}=0}^1(-1)^{q_{|\mathbf S|}}=0^{|\mathbf S|}=[|\mathbf S|=0]=[\mathbf S=\varnothing]。这种方法容易理解一些(实际上也给二项式定理带来了一个组合证明)。
回到原来问题,设 n=p_1^{k_1}p_2^{k_2}\cdots p_v^{k_v},\mu(d) 当 d 含平方因子时为 0,所以每项次数都是 0 或 1 时才会影响答案,答案就是 [v=0] 即 [n=1]。
由于 \mu=\mathbf 1^{-1},因此 f/\mathbf 1=f*\mu,这样有经典的莫比乌斯反演公式\text{(Möbius inversion formula)}:
g(n)=\sum_{d \mid n}f(d) \iff f(n)=\sum_{d \mid n}g(d)\mu\left(\dfrac{n}{d}\right)
虽然一般在 OI 中听到莫比乌斯反演这个词是在 \gcd 求和中,但是实际上 \gcd 求和用不到这个定理本身。这是因为那种凑 f 和 g 的方法早就不流行了,下面介绍的是现在普遍使用的方法。
\frak{Pars\ B} \gcd 求和
\text{Chapter 2} 一维 \gcd 求和
2.1 一个简单的问题
例 2.1 求 \displaystyle\sum_{k=1}^n\mathrm d(\gcd(n,k))。
你可能会说这不简单吗,n 和 k 的最大公因子的因子数就是 n 和 k 的公因子数,枚举每一个因子算一下不就行了。
现在分析一下刚才的过程。上面这句话实际上蕴涵了一个式子:d \mid \gcd(x,y) \iff d \mid x \land d \mid y。从这一步出发推导一下:
\begin{aligned}
&\sum_{k=1}^n\mathrm d(\gcd(n,k))\\
={}&\sum_{k=1}^n\sum_{d \mid \gcd(n,k)}1\\
={}&\sum_{k=1}^n\sum_{d}[d \mid n][d \mid k]\\
={}&\sum_{d \mid n}\sum_{k=1}^n[d \mid k]\\
={}&\sum_{d \mid n}\dfrac{n}{d}=\sum_{d \mid n}d=\sigma(n)
\end{aligned}
2.2 进阶
例 2.2 求 \displaystyle\sum_{k=1}^n[\gcd(n,k)=1]。
这个就是欧拉函数的定义。
仿照前面的经验,尝试把带 \gcd 的式子拆成一个枚举约数的和式(也就是写成一个函数与 \mathbf 1 的卷积)。很容易想到因为 \mu=\mathbf 1^{-1} 所以 \mu*\mathbf 1=\varepsilon,那么:
\begin{aligned}
&\sum_{k=1}^n\mathrm \varepsilon(\gcd(n,k))\\
={}&\sum_{k=1}^n\sum_{d}[d \mid n][d \mid k]\mu(d)\\
={}&\sum_{d \mid n}\mu(d)\sum_{k=1}^n[d \mid k]\\
={}&\sum_{d \mid n}\mu(d)\dfrac{n}{d}\\
={}&(\mu*\mathrm{id})(n)
\end{aligned}
### $2.3$ 一般形式
> **例 2.3** 求 $\displaystyle\sum_{k=1}^nf(\gcd(n,k))$。
一种方法是枚举 $\gcd(n,k)$,因为 $\gcd(x,y)=n \iff n \mid x \land n \mid y \land \gcd\left(\dfrac{n}{x},\dfrac{n}{y}\right)=1$,所以:
$$
\begin{aligned}
&\sum_{k=1}^nf(\gcd(n,k))\\
={}&\sum_{k=1}^n\sum_{d \ge 1}[\gcd(n,k)=d]f(d)\\
={}&\sum_{d \ge 1}f(d)\sum_{k=1}^n[\gcd(n,k)=d]\\
={}&\sum_{d \ge 1}f(d)\sum_{k=1}^n[d \mid n][d \mid k]\left[\gcd\left(\dfrac{n}{d},\dfrac{k}{d}\right)=1\right]\\
={}&\sum_{d \mid n}f(d)\sum_{k=1}^n[d \mid k]\left[\gcd\left(\dfrac{n}{d},\dfrac{k}{d}\right)=1\right]\\
={}&\sum_{d \mid n}f(d)\sum_{k=1}^{\frac{n}{d}}\left[\gcd\left(\dfrac{n}{d},k\right)=1\right]\\
={}&\sum_{d \mid n}f(d)(\mu*\mathrm{id})\left(\dfrac{n}{d}\right)\\
={}&(f*\mu*\mathrm{id})(n)
\end{aligned}
$$
(求和上界的下取整一般省略不写,因为求和符号已经默认了是整数)
另一种思路是仿照前面两个例题做法,把 $f$ 写成 $f/\mathbf 1*\mathbf 1$,这样就提取出来了一个 $\mathbf 1$:
$$
\begin{aligned}
&\sum_{k=1}^nf(\gcd(n,k))\\
={}&\sum_{k=1}^n\sum_{d}[d \mid n][d \mid k](f/\mathbf 1)(d)\\
={}&\sum_{d \mid n}(f/\mathbf 1)(d)\sum_{k=1}^n[d \mid k]\\
={}&\sum_{d \mid n}(f/\mathbf 1)(d)\dfrac{n}{d}\\
={}&(f/\mathbf 1*\mathrm{id})(n)
\end{aligned}
$$
$f/\mathbf 1$ 就是 $f*\mu$,所以两个结果是相同的。
### $2.4$ 一些额外内容
> **例 2.4** 求 $\displaystyle\sum_{k=1}^nf(k)g(\gcd(n,k))$。
参考上面第二种方法。
$$
\begin{aligned}
&\sum_{k=1}^nf(k)g(\gcd(n,k))\\
={}&\sum_{k=1}^nf(k)\sum_{d}[d \mid n][d \mid k](g/\mathbf 1)(d)\\
={}&\sum_{d \mid n}(g/\mathbf 1)(d)\sum_{k=1}^nf(k)[d \mid k]\\
={}&\sum_{d \mid n}(g/\mathbf 1)(d)\sum_{k=1}^{\frac{n}{d}}f(dk)\\
\end{aligned}
$$
当 $f$ 为完全积性函数时可以变成 $\displaystyle\sum_{d \mid n}(g/\mathbf 1)(d)f(d)f\left(\dfrac{n}{d}\right)=((f \times (g/\mathbf 1))*f)(n)$。
## $\text{Chapter 3}$ 二维 $\gcd$ 求和
### $3.1$ 互质整数对
> **例 3.1** 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=1]$。
根据前面一章的思路,还是把 $\varepsilon$ 写成 $\mu*\mathbf 1$:
$$
\begin{aligned}
&\sum_{i=1}^n\sum_{j=1}^m\varepsilon(\gcd(i,j))\\
={}&\sum_{i=1}^n\sum_{j=1}^m\sum_{d \ge 1}\mu(d)[d \mid i][d \mid j]\\
={}&\sum_{d \ge 1}\mu(d)\sum_{i=1}^n[d \mid i]\sum_{j=1}^m[d \mid j]\\
={}&\sum_{d \ge 1}\mu(d)\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor
\end{aligned}
$$
> **练习 3.1** [P2158 [SDOI2008] 仪仗队](//www.luogu.com.cn/problem/P2158)
>
> 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^n[\gcd(i,j)=1]$。
### $3.2$ 一般形式
> **例 3.2** 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^mf(\gcd(i,j))$。
还是两种思路。一种是枚举 $\gcd$:
$$
\begin{aligned}
&\sum_{i=1}^n\sum_{j=1}^mf(\gcd(i,j))\\
={}&\sum_{i=1}^n\sum_{j=1}^m\sum_{k \ge 1}f(k)[\gcd(i,j)=k]\\
={}&\sum_{k \ge 1}f(k)\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=k]\\
={}&\sum_{k \ge 1}f(k)\sum_{i=1}^{\frac{n}{k}}\sum_{j=1}^{\frac{m}{k}}[\gcd(i,j)=1]\\
={}&\sum_{k \ge 1}f(k)\sum_{d \ge 1}\mu(d)\left\lfloor\dfrac{n}{kd}\right\rfloor\left\lfloor\dfrac{m}{kd}\right\rfloor
\end{aligned}
$$
直接算复杂度太高,考虑把那个 $kd$ 搞掉。枚举 $T=kd$,那么:
$$
\begin{aligned}
&\sum_{k \ge 1}f(k)\sum_{d \ge 1}\mu(d)\left\lfloor\dfrac{n}{kd}\right\rfloor\left\lfloor\dfrac{m}{kd}\right\rfloor\\
={}&\sum_{T \ge 1}\left\lfloor\dfrac{n}{T}\right\rfloor\left\lfloor\dfrac{m}{T}\right\rfloor\sum_{k \ge 1}f(k)\sum_{d \ge 1}\mu(d)[kd=T]\\
={}&\sum_{T \ge 1}\left\lfloor\dfrac{n}{T}\right\rfloor\left\lfloor\dfrac{m}{T}\right\rfloor\sum_{k \ge 1}f(k)[k \mid T]\mu\left(\dfrac{T}{k}\right)\\
={}&\sum_{T \ge 1}\left\lfloor\dfrac{n}{T}\right\rfloor\left\lfloor\dfrac{m}{T}\right\rfloor\sum_{k \mid T}f(k)\mu\left(\dfrac{T}{k}\right)\\
={}&\sum_{T \ge 1}(f*\mu)(T)\left\lfloor\dfrac{n}{T}\right\rfloor\left\lfloor\dfrac{m}{T}\right\rfloor
\end{aligned}
$$
另外一种思路是拆卷积(这种显然更简单,可惜并没有普及):
$$
\begin{aligned}
&\sum_{i=1}^n\sum_{j=1}^mf(\gcd(i,j))\\
={}&\sum_{i=1}^n\sum_{j=1}^m\sum_{d \ge 1}(f/\mathbf 1)(d)[d \mid i][d \mid j]\\
={}&\sum_{d \ge 1}(f/\mathbf 1)(d)\sum_{i=1}^n[d \mid i]\sum_{j=1}^m[d \mid j]\\
={}&\sum_{d \ge 1}(f/\mathbf 1)(d)\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor
\end{aligned}
$$
> **练习 3.2** [P4449 于神之怒加强版](//www.luogu.com.cn/problem/P4449)
>
> 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k$。
### $3.3$ 额外内容
> **例 3.3** 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^mf(i)g(j)h(\gcd(i,j))$。
按照上面的第二种思路走(第一种太长不写了):
$$
\begin{aligned}
&\sum_{i=1}^n\sum_{j=1}^mf(i)g(j)h(\gcd(i,j))\\
={}&\sum_{i=1}^nf(i)\sum_{j=1}^mg(j)\sum_{d \ge 1}(h/\mathbf 1)(d)[d \mid i][d \mid j]\\
={}&\sum_{d \ge 1}(h/\mathbf 1)(d)\sum_{i=1}^n[d \mid i]f(i)\sum_{j=1}^m[d \mid j]g(j)\\
={}&\sum_{d \ge 1}(h/\mathbf 1)(d)\sum_{i=1}^{\frac{n}{d}}f(id)\sum_{j=1}^{\frac{m}{d}}g(jd)
\end{aligned}
$$
当 $f$ 和 $g$ 为完全积性函数时,结果等于 $\displaystyle\sum_{d \ge 1}(h/\mathbf 1)(d)f(d)\Sigma f\left(\left\lfloor\dfrac{n}{d}\right\rfloor\right)g(d)\Sigma g\left(\left\lfloor\dfrac{m}{d}\right\rfloor\right)$。
> **练习 3.3** [P3768 简单的数学题](//www.luogu.com.cn/problem/P3768)
>
> 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)$。
> **练习 3.4** [P1829 [国家集训队] Crash的数字表格 / JZPTAB](//www.luogu.com.cn/problem/P1829)
>
> 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j)$。
> **练习 3.5** [SP26108 TRENDGCD - Trending GCD](//www.luogu.com.cn/problem/SP26108)
>
> 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^mijf(\gcd(i,j))$,其中 $f(n)=n\mu^2(n)$。
### $3.4$ 从和到积
> **例 3.4** 求 $\displaystyle\prod_{i=1}^n\prod_{j=1}^mf(\gcd(i,j))$。
一种方法还是枚举。先 $\log$ 再 $\exp$ 处理起来会舒服一些。
$$
\begin{aligned}
&\prod_{i=1}^n\prod_{j=1}^mf(\gcd(i,j))\\
={}&\exp\sum_{i=1}^n\sum_{j=1}^m\log f(\gcd(i,j))\\
={}&\exp\sum_{i=1}^n\sum_{j=1}^m\sum_{k \ge 1}\log f(k)[\gcd(i,j)=k]\\
={}&\exp\sum_{k \ge 1}\log f(k)\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=k]\\
={}&\exp\sum_{k \ge 1}\log f(k)\sum_{d \ge 1}\mu(d)\left\lfloor\dfrac{n}{kd}\right\rfloor\left\lfloor\dfrac{m}{kd}\right\rfloor\\
={}&\prod_{k \ge 1}f(k)^{\sum_{d \ge 1}\mu(d)\lfloor\frac{n}{kd}\rfloor\lfloor\frac{m}{kd}\rfloor}
\end{aligned}
$$
当 $n=m$ 时式子可以转化成 $\displaystyle\prod_{k \ge 1}f(k)^{2\Phi(\frac{n}{k})-1}$。
否则还是枚举 $kd$,答案为 $\displaystyle\prod_{T \ge 1}\left(\prod_{k \mid T}f(k)^{\mu(\frac{T}{k})}\right)^{\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor}$。
当然直接 $\log$ 再 $\exp$ 也是可行的,而且还容易一些:
$$
\begin{aligned}
&\prod_{i=1}^n\prod_{j=1}^mf(\gcd(i,j))\\
={}&\exp\sum_{i=1}^n\sum_{j=1}^m\log f(\gcd(i,j))\\
={}&\exp\sum_{d \ge 1}(\log f*\mu)(d)\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor\\
={}&\exp\sum_{d \ge 1}\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor\sum_{k \mid d}\log f(k)\mu\left(\dfrac{d}{k}\right)\\
={}&\prod_{d \ge 1}\left(\prod_{k \mid d}f(k)^{\mu(\frac{d}{k})}\right)^{\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor}
\end{aligned}
$$
特别地,当 $f=\mathrm{id}$ 时,函数 $\mathrm{\log}*\mu=\mathrm{\log/\mathbf 1}$ 叫 von Mangoldt$^{[10]}$ 函数,容易证明其 DGF 为 $-\dfrac{\zeta'(x)}{\zeta(x)}$,且函数当 $n$ 可以表示为 $p^k$($p$ 为质数且 $k \ne 0$)形式时为 $\log p$,否则为 $0$(证明很容易,推导会在第 7 章给出)。这个函数主要在解析数论里用到,但是这篇文章后面也会介绍一些初等数论中的应用。
> **练习 3.6** [P5221 Product](//www.luogu.com.cn/problem/P5221)(中间过程)
>
> 求 $\displaystyle\prod_{i=1}^n\prod_{j=1}^n\gcd(i,j)$。
> **练习 3.7** [P3704 [SDOI2017] 数字表格](//www.luogu.com.cn/problem/P3704)
>
> 求 $\displaystyle\prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)}$,其中 $f$ 是斐波那契数列。
### $3.5$ 高维情况
> **例 3.5** 求 $\displaystyle\sum_{x_1=1}^n\sum_{x_2=1}^n\cdots\sum_{x_k=1}^nf(\gcd(x_1,x_2,\cdots,x_k))$。
暴力拆式子。
$$
\begin{aligned}
&\displaystyle\sum_{x_1=1}^n\sum_{x_2=1}^n\cdots\sum_{x_k=1}^nf(\gcd(x_1,x_2,\cdots,x_k))\\
={}&\displaystyle\sum_{x_1=1}^n\sum_{x_2=1}^n\cdots\sum_{x_k=1}^n\sum_{d \ge 1}(f/\mathbf 1)(d)[d \mid x_1][d \mid x_2]\cdots[d \mid x_k]\\
={}&\sum_{d \ge 1}(f/\mathbf 1)(d)\left\lfloor\dfrac{n}{d}\right\rfloor^k
\end{aligned}
$$
> **练习 3.8** [AT5310 [ABC162E] Sum of gcd of Tuples (Hard)](//www.luogu.com.cn/problem/AT5310)
>
> 求 $\displaystyle\sum_{x_1=1}^n\sum_{x_2=1}^n\cdots\sum_{x_k=1}^n\gcd(x_1,x_2,\cdots,x_k)$。
> **练习 3.9** 任意选取 $k$ 个正整数,求它们互质的概率。
>
> 注意在 $\mathbb N^+$ 中其实是没办法实现等概率的(因为测度的可数可加性),所以我们要求的其实是 $[1,n]$ 范围的概率再对 $n$ 取极限,也就是所谓的自然密度。
> **练习 3.10** 给定 $n$ 个正整数 $s_1,s_2,\cdots,s_n>1$,求 $\displaystyle\sum_{\substack{x_1,x_2,\cdots,x_n \ge 1\\\gcd(x_1,x_2,\cdots,x_n)=1}}x_1^{-s_1}x_2^{-s_2}\cdots x_n^{-s_n}$。
# $\frak{Pars\ C}$ 下取整求和
## $\text{Chapter 4}$ 下取整与狄利克雷前缀和
### $4.1$ 约数个数前缀和
> **例 4.1** [P1403 [AHOI2005] 约数研究](//www.luogu.com.cn/problem/P1403)
>
> 求 $\displaystyle\sum_{k=1}^n\mathrm d(k)$。
直接线性筛再求和当然是可行的,但是只求一次有没有更优的做法?结合例 2.1 的做法,考虑枚举每一个约数 $d$,它被计算的次数应该是 $\left\lfloor\dfrac{n}{d}\right\rfloor$。所以本质还是拆卷积:
$$
\begin{aligned}
&\sum_{k=1}^n\mathrm d(k)\\
={}&\sum_{k=1}^n\sum_{d \mid k}1\\
={}&\sum_{d \ge 1}\sum_{k=1}^n[d \mid k]\\
={}&\sum_{d \ge 1}\left\lfloor\dfrac{n}{d}\right\rfloor\\
\end{aligned}
$$
直接算还是线性的,但是代码量大大降低,并且有优化空间(见第 5 章)。
### $4.2$ 狄利克雷前缀和
> **例 4.2** 求 $\displaystyle\sum_{k=1}^n(f*g)(k)$。
还是拆卷积。
$$
\begin{aligned}
&\sum_{k=1}^n\mathrm (f*g)(k)\\
={}&\sum_{k=1}^n\sum_{d \mid k}f(d)g\left(\dfrac{k}{d}\right)\\
={}&\sum_{d \ge 1}f(d)\sum_{k=1}^n[d \mid k]g\left(\dfrac{k}{d}\right)\\
={}&\sum_{d \ge 1}f(d)\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}g(k)\\
={}&\sum_{d \ge 1}f(d)\Sigma g\left(\left\lfloor\frac{n}{d}\right\rfloor\right)
\end{aligned}
$$
另外因为卷积是可交换的,所以式子也等于 $\displaystyle\sum_{d \ge 1}g(d)\Sigma f\left(\left\lfloor\frac{n}{d}\right\rfloor\right)$。
实际上三个式子都等价于求 $\displaystyle\sum_{xy \le n}f(x)g(y)$。以 $n=6$ 为例,$\displaystyle\sum_{k=1}^n(f*g)(k)$ 相当于枚举乘积:
$$
\begin{matrix}
\color{red}f(1)g(1)&\color{orange}f(1)g(2)&\color{green}f(1)g(3)&\color{blue}f(1)g(4)&\color{purple}f(1)g(5)&f(1)g(6)\\
\color{orange}f(2)g(1)&\color{blue}f(2)g(2)&f(2)g(3)&&&\\
\color{green}f(3)g(1)&f(3)g(2)&&&&\\
\color{blue}f(4)g(1)&&&&&\\
\color{purple}f(5)g(1)&&&&&\\
f(6)g(1)&&&&&\\
\end{matrix}
$$
$\displaystyle\sum_{d \ge 1}f(d)\Sigma g\left(\left\lfloor\frac{n}{d}\right\rfloor\right)$ 相当于枚举 $f$ 的参数:
$$
\begin{matrix}
\color{red}f(1)g(1)&\color{red}f(1)g(2)&\color{red}f(1)g(3)&\color{red}f(1)g(4)&\color{red}f(1)g(5)&\color{red}f(1)g(6)\\
\color{orange}f(2)g(1)&\color{orange}f(2)g(2)&\color{orange}f(2)g(3)&&&\\
\color{green}f(3)g(1)&\color{green}f(3)g(2)&&&&\\
\color{blue}f(4)g(1)&&&&&\\
\color{purple}f(5)g(1)&&&&&\\
f(6)g(1)&&&&&\\
\end{matrix}
$$
$\displaystyle\sum_{d \ge 1}g(d)\Sigma f\left(\left\lfloor\frac{n}{d}\right\rfloor\right)$ 则相当于枚举 $g$ 的参数:
$$
\begin{matrix}
\color{red}f(1)g(1)&\color{orange}f(1)g(2)&\color{green}f(1)g(3)&\color{blue}f(1)g(4)&\color{purple}f(1)g(5)&f(1)g(6)\\
\color{red}f(2)g(1)&\color{orange}f(2)g(2)&\color{green}f(2)g(3)&&&\\
\color{red}f(3)g(1)&\color{orange}f(3)g(2)&&&&\\
\color{red}f(4)g(1)&&&&&\\
\color{red}f(5)g(1)&&&&&\\
\color{red}f(6)g(1)&&&&&\\
\end{matrix}
$$
### $4.3$ 通用形式
这里沿用[随机说话(三)](//www.luogu.com.cn/blog/KawashiroNitori/random-3)的记号。采用这种形式的原因可以看文章。
注意到例 4.2 这种形式是可以抽象成一种运算的。定义 $f \otimes g=\Sigma(\Delta f*\Delta g)$,等价于 $\Delta(f \otimes g)=\Delta f*\Delta g$,即在差分下的狄利克雷卷积。
这样前面的几个式子就可以变成:
$$(f \otimes g)(n)=\sum_{k=1}^n(\Delta f*\Delta g)(k)=\sum_{k=1}^n\Delta f(k)g\left(\left\lfloor\frac{n}{k}\right\rfloor\right)$$
$$\Sigma(f*g)(n)=\sum_{k=1}^n(f*g)(k)=\Sigma f \otimes \Sigma g$$
$$\sum_{k=1}^nf(k)g\left(\left\lfloor\frac{n}{k}\right\rfloor\right)=\Sigma f \otimes g$$
($f$ 和 $g$ 交换的形式这里不写了)
容易证明 $f(1) \ne 0$ 的数论函数和 $\otimes$ 运算构成交换群(单位元就是 $\mathbf 1$,逆元是 $\Sigma(\Delta f)^{-1}$),但是并没有发现什么特殊的良好性质,所以这里暂且不提。
### $4.4$ $\gcd$ 方阵求和
> **例 4.3** 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^nf(\gcd(i,j))$。
众所周知这个可以利用 $\gcd$ 对称性做,现在看下假如不知道对称性应该怎么做。
首先根据例 3.2 答案是 $\displaystyle\sum_{k \ge 1}(f/\mathbf 1)\left\lfloor\dfrac{n}{k}\right\rfloor^2$,右边 $\mathrm{id}_2$ 做一下差分是 $n^2-(n-1)^2=2n-1$,所以答案是 $\Sigma(f/\mathbf 1*\Delta\mathrm{id}_2)(n)$,括号里可以写成 $f/\mathbf 1*(2\mathrm{id}-\mathbf 1)=2f/\mathbf 1*\mathrm{id}-f/\mathbf 1*\mathbf 1=2f*\varphi-f$。
比如当 $f=\varepsilon$ 的时候答案就是 $\Sigma(2\varphi-\varepsilon)(n)=(2\Phi-\mathbf 1)(n)=2\Phi(n)-1$。
### $4.5$ 小插曲
来一个和主题没什么关系的。
> **例 4.4** 求 $\displaystyle\sum_{i=1}^n\sum_{j=1}^nf(i+j)$。
会在 [P6156](//www.luogu.com.cn/problem/P6156) 中见到的中间步骤。
处理 $i+j$ 会导致式子极其恶心。对称性当然能做,这里看一个基于差分的方法。
设答案为 $F(n)$,因为 $i+j$ 有交换律所以有 $\Delta F(n)=2\displaystyle\sum_{k=1}^nf(k+n)-f(2n)=2\Sigma f(2n)-2\Sigma f(n)-f(2n)$。
到这一步就可以做了。
## $\text{Chapter 5}$ 整除分块
### $5.1$ 狄利克雷双曲线法
> **例 5.1** 以 $\Theta(\sqrt n)$ 的复杂度计算例 4.2。
>
> (因为这篇文章以理论为主,所以一般只要求推出式子而不要求计算方法,约定“求”表示只得出一个式子,“计算”表示用实际方法计算)
这里从[论文哥的这篇文章](//negiizhao.blog.uoj.ac/blog/7165)贺张图:

假设 $ab=n$,把曲线分成三部分:
$$\sum_{k=1}^n(f*g)(n)=\sum_{k \le a}f(k)\Sigma g\left(\left\lfloor\frac{n}{k}\right\rfloor\right)+\sum_{k \le b}g(k)\Sigma f\left(\left\lfloor\frac{n}{k}\right\rfloor\right)-\Sigma f(a)\Sigma g(b)$$
应用中一般取 $a=b=\sqrt n$。
在能快速求出单点与前缀和(实际上能求出在分子为 $n$ 的整除集合下的前缀和就行,5.3 节中会提到集合大小是 $\Theta(\sqrt n)$ 的)的情况下,复杂度显然为 $\Theta(\sqrt n)$。这种方法的名称叫狄利克雷双曲线法$\text{(Dirichlet hyperbola method)}$。
> **练习 5.1** [UVA11526 H(n)](//www.luogu.com.cn/problem/UVA11526)/[P3935 Calculating](//www.luogu.com.cn/problem/P3935)
>
> 以 $\Theta(\sqrt n)$ 的复杂度计算例 4.1。
> **练习 5.2** 求例 4.1 的渐近表达式。
### $5.2$ 数论分块
抽象地说,数论中分块指的是这样一类算法:对于一个集合 $\mathbf S$ 和两个函数 $f,g$,要求出 $\displaystyle\sum_{x \in \mathbf S}f(x)g(x)$,如果 $\mathbf T=\{g(x)|x \in \mathbf S\}$ 的大小较小即 $g(x)$ 的取值个数较少,此时有:
$$\sum_{x \in \mathbf S}f(x)g(x)=\sum_{v \in \mathbf T}v\sum_{x \in \mathbf S}f(x)[g(x)=v]$$
通常情况下满足 $[g(x)=v]$ 的值是连续的,如果 $f(x)$ 能够快速求出前缀和(至少能够快速求出块边界处的前缀和)的话,就可以把时间复杂度优化到 $\Theta(|\mathbf T|)$。
我们平时看到更多的是求 $\displaystyle\sum_{x \in \mathbf S}f(x)g(h(x))$,其中 $h$ 在 $\mathbf S$ 中的值域较小。在实数域下常见的 $h(x)$ 有 $\lfloor\sqrt x\rfloor$ 和 $\left\lfloor\dfrac{n}{x}\right\rfloor$。
现在以前面一种为例(一般叫根号分块),假如我们要求 $\displaystyle\sum_{k=1}^nf(k)g(\lfloor\sqrt k\rfloor)$,由于区间 $[x^2,x^2+2x+1)$ 内 $\lfloor\sqrt k\rfloor$ 的值都是 $x$,这样式子就可以转换成:
$$\sum_{x \le \sqrt n}g(x)(\Sigma f(x^2+2x)-\Sigma f(x^2-1))$$
只要预处理 $\Sigma f$ 在所有 $x^2-1$ 处的值就行。
后面一种一般叫整除分块(有的时候“数论分块”这个词也会用来代表整除分块)。这种比根号分块复杂一些,讨论之前先讲一下整除的一些性质。
### $5.3$ 整除
这一节只讨论正数的情况。
$\left\lfloor\dfrac{n}{x}\right\rfloor$ 到底代表什么?狄利克雷双曲线告诉我们,它其实是满足 $kx \le n$ 的最大整数 $k$,也就是 $\displaystyle\max_{kx \le n}k$。这样来证明一些简单的性质。
> **例 5.2** 证明:当 $a$ 为正整数时,$\left\lfloor\dfrac{x}{a}\right\rfloor=\left\lfloor\dfrac{\lfloor x\rfloor}{a}\right\rfloor$。
直接套前面的性质就行,$\left\lfloor\dfrac{x}{a}\right\rfloor=\displaystyle\max_{ka \le x}k=\displaystyle\max_{ka \le \lfloor x\rfloor}k=\left\lfloor\dfrac{\lfloor x\rfloor}{a}\right\rfloor$。
现在对于一个正整数 $n$,定义 $n$ 的整除集合 $\mathcal D(n)$ 是所有 $\left\lfloor\dfrac{n}{x}\right\rfloor$ 的集合。容易得到 $\mathcal D(n)$ 的大小量级:
> **例 5.3** 证明:$|\mathcal D(n)|=2\sqrt n+\mathcal O(1)$。
$x \le \sqrt n$ 的部分一定会包含在集合里,因为 $\dfrac{n}{x-1}-\dfrac{n}{x}=\dfrac{n}{x(x-1)}>1$ 从而所有 $\left\lfloor\dfrac{n}{x}\right\rfloor$ 都互不相同。
而对于 $x>\sqrt n$ 的部分,此时 $\dfrac{n}{x-1}-\dfrac{n}{x}<1$,所以假如 $\left\lfloor\dfrac{n}{x-1}\right\rfloor \ne \left\lfloor\dfrac{n}{x}\right\rfloor$ 的话两者必然相差 $1$。这样 $[1,\sqrt n]$ 内的整数都在集合内。
忽略掉常数级别的误差,集合大小就是 $2\sqrt n+\mathcal O(1)$ 的。
那么必定存在 $|\mathcal D(n)|$ 个连续的块的值是相同的。现在看看怎么求出块的范围。
> **例 5.4** 求 $x$ 对应块的右端点,即 $\displaystyle\max_{k}k\left[\left\lfloor\dfrac{n}{x}\right\rfloor=\left\lfloor\dfrac{n}{k}\right\rfloor\right]$。
设 $y=\left\lfloor\dfrac{n}{x}\right\rfloor$,这样就是求出 $\displaystyle\max_{kj \le n}j=y$ 的最大 $k$,这时 $k$ 就是满足 $ky \le n$ 的最大值,即 $\left\lfloor\dfrac{n}{y}\right\rfloor=\left\lfloor\dfrac{n}{\left\lfloor\frac{n}{x}\right\rfloor}\right\rfloor$。
### $5.4$ 整除分块
上面的理论有了,很容易写出代码(采用 atom-one-light 主题高亮):
$$
\begin{array}{l}
\texttt{\textcolor{#986801}{int} ans = \textcolor{#986801}{0};}\\
\texttt{\textcolor{#a626a4}{for} (\textcolor{#986801}{int} l = \textcolor{#986801}{1}, r; l <= n; l = r + \textcolor{#986801}{1}) \{}\\
\texttt{\qquad r = n / (n / l);}\\
\texttt{\qquad ans += (\textcolor{#c18401}{sum\_f}(r) - \textcolor{#c18401}{sum\_f}(l-1)) * \textcolor{#c18401}{g}(n / l);}\\
\texttt{\}}
\end{array}
$$
二维的整除分块只要把 $\texttt{n / (n / l)}$ 改成 $\texttt{\textcolor{#c18401}{min}(n / (n / l), m / (m / l))}$ 就行。
## $\text{Chapter 6}$ 杜教筛和 Powerful Number 筛
### $6.1$ 杜教筛
杜教筛是在 $f$ 和 $g$ 能快速求出前缀和的情况下求 $h=f/g$ 前缀和的方式。原理:
$$
\begin{aligned}
g*h&=f\\
\sum_{k \ge 1}g(k)\Sigma h\left(\left\lfloor\dfrac{n}{k}\right\rfloor\right)&=\Sigma f(n)\\
g(1)\Sigma h(n)+\sum_{k \ge 2}g(k)\Sigma h\left(\left\lfloor\dfrac{n}{k}\right\rfloor\right)&=\Sigma f(n)\\
g(1)\Sigma h(n)&=\Sigma f(n)-\sum_{k \ge 2}g(k)\Sigma h\left(\left\lfloor\dfrac{n}{k}\right\rfloor\right)
\end{aligned}
$$
然后可以分块做。复杂度和优化可以看[这篇文章](//www.luogu.com.cn/blog/_post/458407),因为本篇主要讲理论和这个关系不大就不多提了。
> **例 6.1** [P3768 简单的数学题](//www.luogu.com.cn/problem/P3768)
>
> 计算练习 3.3,其中 $n \le 1.1 \times 10^9$。
前面已经算过了答案,现在最重要的是求 $\varphi(n)n^2$ 的前缀和。这个比较简单,因为 $\mathrm{id}_2$ 是完全积性函数,所以可以用分配律提取,$\mathrm{id}_2 \times \varphi=\mathrm{id}_2 \times (\mathrm{id}/\mathbf 1)=(\mathrm{id}_2\times \mathrm{id})/(\mathrm{id_2} \times \mathbf 1)=\mathrm{id}_3/\mathrm{id}_2$。假如不知道这个技巧的话可以用贝尔级数硬做。
### $6.2$ Powerful Number 筛
假如积性函数 $f$ 存在积性函数 $g$ 使得对于质数 $p$ 有 $g(p)=f(p)$ 的话,那么可以证明 $(f/g)(p)=0$,因为 $f/g$ 是积性函数,所以 $n$ 质因数分解只要有一项次数为 $1$ 的话 $(f/g)(n)$ 就是 $0$。
把每个质数的次数都超过 $1$ 的数叫做**幂数**$\text{(powerful number, PN)}$(OI 里这个概念的英文名似乎远比中文名常见,所以这里也使用 PN 的名字)。容易证明 PN 一定能写成 $a^2b^3$ 的形式(奇数次项提取一个 $p^3$ 出来,剩下直接开根号)。
忽略重复数字的问题(例如 $1728=8^2 \times 3^3=1^2 \times 12^3$),那么 $n$ 以内 PN 的数量不会超过 $\displaystyle\sum_{k=1}^{\lfloor\sqrt n\rfloor}\sqrt[3]{\dfrac{n}{k^2}} \sim \int_{1}^{\sqrt n}\sqrt[3]{\dfrac{n}{x^2}}\mathrm dx=\sqrt[3]n\int_{1}^{\sqrt n}x^{-\frac{2}{3}}\mathrm dx=\dfrac{\sqrt[3]n\sqrt[6]n}{3}=\Theta(\sqrt n)$ 级别。
另外如果 $b$ 不含平方因子那么表示法是唯一的(比如 $1728$ 的唯一表示法就是 $8^2 \times 3^3$)。这样可以算出答案是 $C\sqrt n+\mathcal O(\sqrt[3]n)$,其中 $C=\dfrac{\zeta(1.5)}{\zeta(3)} \doteq 2.173 \cdots$,过程见[这篇文章](//www.luogu.com.cn/blog/KawashiroNitori/dokkai-1)。
这样设 $h=f/g$,有 $\displaystyle\sum_{k=1}^nf(k)=\sum_{k \ge 1}h(k)\Sigma g\left(\left\lfloor\dfrac{n}{k}\right\rfloor\right)$,假如 $\Sigma g$ 能在 $\Theta(1)$ 的时间求出所有点值的话,因为 $h$ 只在 PN 处取非零值,所以复杂度是 $\Theta(\sqrt n)$ 的。
计算时可以先筛 $\sqrt n$ 以内的质数再 DFS。
> **例 6.2** 已知常数 $s$,定义 $f(p_1^{k_1}p_2^{k_2}p_3^{k_3}\cdots)=p_1^sp_2^sp_3^s\cdots$,以 $\Theta(\sqrt n)$ 的复杂度计算 $\Sigma f(n)$。
可以发现 $\mathrm{id}_s$ 和 $f$ 在质数处取值相等,$f$ 的贝尔级数是 $1+\dfrac{p^sx}{1-x}=\dfrac{1+(p^s-1)x}{1-x}$,$\mathrm{id}_s$ 的贝尔级数是 $\dfrac{1}{1-p^sx}$,所以 $g=f/\mathrm{id}_s$ 的贝尔级数就是 $\dfrac{(1+(p^s-1)x)(1-p^sx)}{1-x}=\dfrac{1-x+p^s(1-p^s)x^2}{1-x}=1+\dfrac{p^s(1-p^s)x^2}{1-x}$,展开一下就可以得到 $g(p^k)$ 的表达式:
$$g(p^k)=\begin{cases}1&k=0,\\0&k=1,\\p^s(1-p^s)&k>1.\end{cases}$$
### $6.3$ 递推计算
PN 筛中有的时候 $h(p^k)$ 不方便求出,但是实际上并不一定要求出 $h(p^k)$ 的通项,可以在搜索过程中递推求。
分析一下时间复杂度,答案是 $\displaystyle\sum_{\substack{p \in \mathbb P\\p \le \sqrt n}}\log_p^2n=\log^2n\sum_{\substack{p \in \mathbb P\\p \le \sqrt n}}\log^{-2}p$,根据[这篇文章](//www.luogu.com.cn/blog/KawashiroNitori/random-4)答案等于 $\Theta\left(\dfrac{\sqrt n}{\log n}\right)$。
> **例 6.3** [P5325 【模板】Min_25 筛](//www.luogu.com.cn/problem/P5325)
>
> 积性函数 $f$ 满足 $f(p^k)=p^k(p^k-1)$,计算 $\Sigma f(n)$。
构造 $g(n)=n\varphi(n)$,则 $g(p)=f(p)$。$g$ 的前缀和例 6.1 一样可以杜教筛搞。
# $\frak{Pars\ D}$ 综合问题
## $\text{Chapter 7}$ 综合 $\gcd$ 求和
### $7.1$ 二重 $\gcd$ 求和
> **例 7.1** [P1587 [NOI2016] 循环之美](//www.luogu.com.cn/problem/P1587)
>
> 给定常数 $k \le 2000$,计算 $\displaystyle\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=1][\gcd(j,k)=1]$,其中 $n,m \le 10^9$。
发现这个其实就是例 3.3 的特例,其中 $f=\mathbf 1,g(n)=\chi_k,h=\varepsilon$,$f$ 和 $g$ 都是完全积性函数所以答案是 $\displaystyle\sum_{d \ge 1}\mu(d)\left\lfloor\dfrac{n}{d}\right\rfloor\chi_k(d)\Sigma\chi_k\left(\left\lfloor\dfrac{m}{d}\right\rfloor\right)$。
$\chi_k$ 显然有一个长度为 $k$ 的周期,所以预处理之后可以 $\Theta(1)$ 求出前缀和。对于 $\mu(d)\chi_k(d)$,因为 $\chi_k$ 是完全积性函数所以可以用分配律提取变成 $(\varepsilon/\mathbf 1)\chi_k=\varepsilon/\chi_k$,可以杜教筛计算。
### $7.2$ $\operatorname{lcm}$ 求和
> **例 7.2** 计算 $\operatorname{lcm}(1,2,3,\cdots,n)$,其中 $n \le 10^9$。
假设答案为 $L(n)$。$n$ 以内每个质数 $p$ 在 $L(n)$ 中的次数都是 $\left\lfloor\log_pn\right\rfloor$,所以答案是:
$$\prod_{p \in \mathbb P}p^{\left\lfloor\log_pn\right\rfloor}$$
两边取 $\log$ 转化成和式:
$$
\begin{aligned}
\log L(n)&=\sum_{p \in \mathbb P}\log p\left\lfloor\log_pn\right\rfloor\\
&=\sum_{p \in \mathbb P}\log p\sum_{p^k \le n}1\\
&=\sum_{\substack{p \in \mathbb P\\p^k \le n}}\log p
\end{aligned}
$$
这个式子是不是有点似曾相识?没错它就是 $\Sigma\Lambda(n)$。因此我们有:
$$L(n)=\prod_{k=1}^nk^{\mu\left(\left\lfloor\frac{n}{k}\right\rfloor\right)}$$
一种方法是杜教筛求出 $\mu$ 前缀和之后再分块,另一种方法是从对数出发,因为 $\Lambda=\log/\mathbf 1$ 可以杜教筛,答案 $\log L(n)=\Sigma\log n-\displaystyle\sum_{k \ge 2}\log L\left(\left\lfloor\dfrac{n}{k}\right\rfloor\right)$,再 $\exp$ 回去就有:
$$L(n)=n!\left(\prod_{k \ge 2}L\left(\left\lfloor\dfrac{n}{k}\right\rfloor\right)\right)^{-1}$$
主要的难点在于快速求出 $n!$,这已经不在本文的讨论范围了。
### $7.3$ 普通的 $\gcd$ 求积?
> **例 7.3** [SP27942 PROD1GCD - Product it again](//www.luogu.com.cn/problem/SP27942)
>
> 计算 $\displaystyle\prod_{i=1}^n\prod_{j=1}^m\gcd(i,j)$,其中 $n,m \le 10^7$。
这个不是板子吗,答案是 $\displaystyle\prod_{d \ge 1}\left(\prod_{k \mid d}k^{\mu(\frac{d}{k})}\right)^{\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor}$,括号里 $\Theta(n \log n)$ 预处理一下……等等 $n \le 10^7$?
往前退几步,我们会发现括号里其实就是 $\exp(\log/\mathbf 1)=\exp\Lambda$,前缀积就是例 7.2,这里 $n \le 10^7$ 可以用线性筛把 $\exp\Lambda$ 求出来,当 $n=p^k$ 且 $p \in \mathbb P$ 时是 $p$,否则就是 $1$。
现在尝试推广一下。
> **例 7.4** $f$ 是完全加性函数,求 $f/\mathbf 1$ 的表达式。
因为没有积性函数,原来那些方便的工具这里都不起效果了,尝试暴力推式子。
$$
\begin{aligned}
(f/\mathbf 1)(n)&=(f*\mu)(n)\\
&=\sum_{d \mid n}\mu(d)f\left(\dfrac{n}{d}\right)\\
&=\sum_{d \mid n}\mu(d)(f(n)-f(d))\\
&=f(n)\sum_{d \mid n}\mu(d)-\sum_{d \mid n}\mu(d)f(d)\\
&=f(n)\varepsilon(n)-\sum_{d \mid n}\mu(d)f(d)\\
&=-\sum_{d \mid n}\mu(d)f(d)
\end{aligned}
$$
当 $n=1$ 时结果就是 $0$。否则由于 $\mu(d)$ 还是在 $d$ 不含平方因子时才不为 $0$,设 $\mathbf S$ 是 $n$ 的质因子集合,可以得到:
$$
\begin{aligned}
(f/\mathbf 1)(n)&=-\sum_{\mathbf T \subseteq \mathbf S}(-1)^{|\mathbf T|}f\left(\prod_{x \in \mathbf T}x\right)\\
&=-\sum_{\mathbf T \subseteq \mathbf S}(-1)^{|\mathbf T|}\sum_{x \in \mathbf T}f(x)\\
&=-\sum_{x \in \mathbf S}f(x)\sum_{\mathbf T \subseteq \mathbf S}[x \in \mathbf T](-1)^{|\mathbf T|}\\
&=-\sum_{x \in \mathbf S}f(x)\sum_{\mathbf T \subseteq \mathbf S \setminus \{x\}}(-1)^{|\mathbf T|+1}\\
&=\sum_{x \in \mathbf S}f(x)\sum_{\mathbf T \subseteq \mathbf S \setminus \{x\}}(-1)^{|\mathbf T|}\\
&=\sum_{x \in \mathbf S}f(x)[|\mathbf S \setminus \{x\}|=0]\\
&=\sum_{x \in \mathbf S}f(x)[|\mathbf S|=1]\\
&=[|\mathbf S|=1]\sum_{x \in \mathbf S}f(x)
\end{aligned}
$$
所以:
$$(f/\mathbf 1)(n)=\begin{cases}f(p)&n=p^k,p \in \mathbb P,k \ge 1,\\0&\text{otherwise.}\end{cases}$$
换句话说,对于完全积性函数 $f$,此时 $\log f$ 是完全加性的,所以 $\displaystyle\prod_{d \mid n}f(d)^{\mu(\frac{n}{d})}=\exp(\log f/\mathbf 1)(n)$ 可以用线性筛在 $\Theta(n)$ 复杂度内预处理。
# $\frak{Solutiones}$ 练习解答
**练习 3.1** 当 $n=m$ 时可以利用 $\gcd$ 的对称性转化为 $2\Phi(n)-1$。4.4 节会介绍这种问题的通用处理方法。
**练习 3.2** 即 $f=\mathrm{id}_k$,答案是 $\displaystyle\sum_{d \ge 1}(\mathrm{id}_k/\mathbf 1)(d)\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor$。
$\mathrm{id}_k/\mathbf 1$ 的贝尔级数是 $\dfrac{1-x}{1-p^kx}=\dfrac{1}{1-p^kx}-\dfrac{x}{1-p^kx}=1+\displaystyle\sum_{d \ge 1}(p^{dk}-p^{dk-1})x^d$,可以用线性筛处理。
**练习 3.3** 就是上面 $n=m,f=g=h=\mathrm{id}$ 的情况,答案是 $\displaystyle\sum_{d \ge 1}\varphi(d)d^2\left(\Sigma\mathrm{id}\left(\left\lfloor\dfrac{n}{d}\right\rfloor\right)\right)^2$。
注意 OI 题的计算大多依赖整除分块/杜教筛,所以这一部分只提供式子推导,计算部分在例 6.1。
**练习 3.4** 即 $f=g=\mathrm{id},h=\mathrm{id}_{-1}$,答案是 $\displaystyle\sum_{d \ge 1}(\mathrm{id}_{-1}/\mathbf 1)(d)d^2\Sigma\mathrm{id}\left(\left\lfloor\dfrac{n}{d}\right\rfloor\right)\left(\left\lfloor\dfrac{m}{d}\right\rfloor\right)$,$(\mathrm{id}_{-1}/\mathbf 1) \times \mathrm{id}_2$ 根据分配律就是 $\mathrm{id}/\mathrm{id}_2$,贝尔级数 $\dfrac{1-p^2x}{1-px}=1+\dfrac{px(1-p)}{1-px}$,即 $k \ge 1$ 时函数在 $p^k$ 处的值为 $(1-p)p^k$。
**练习 3.5** 还是板子,$f$ 贝尔级数为 $1+px$,所以 $f/\mathbf 1$ 贝尔级数就是 $(1+px)(1-x)=1+(p-1)x-px^2$。
**练习 3.6** 就是 $n=m,f=\mathrm{id}$ 的情况,答案为 $\displaystyle\prod_{k \ge 1}k^{2\Phi(\frac{n}{k})-1}$。
**练习 3.7** 答案就是 $\displaystyle\prod_{d \ge 1}\left(\prod_{k \mid d}f_k^{\mu(\frac{d}{k})}\right)^{\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor}$,括号里面的可以预处理。
**练习 3.8** 就是 $f=\mathrm{id}$ 的情况。
**练习 3.9** 在 $[1,n]$ 中的概率是:
$$
\begin{aligned}
&\dfrac{1}{n^k}\displaystyle\sum_{d \ge 1}\mu(d)\left\lfloor\dfrac{n}{d}\right\rfloor^k\\
={}&\dfrac{1}{n^k}\displaystyle\sum_{d \ge 1}\mu(d)\left(\dfrac{n}{d}+\mathcal O(1)\right)^k\\
={}&\dfrac{1}{n^k}\displaystyle\sum_{d \ge 1}\mu(d)\left(\dfrac{n^k}{d^k}+\mathcal O\left(\dfrac{n^{k-1}}{d^{k-1}}\right)\right)\\
={}&\displaystyle\sum_{d \ge 1}\mu(d)\left(\dfrac{1}{d^k}+\mathcal O\left(\dfrac{1}{d^{k-1}n}\right)\right)\\
={}&\displaystyle\sum_{d \ge 1}\dfrac{\mu(d)}{d^k}+\dfrac{1}{n}\mathcal O\left(\sum_{d \ge 1}\dfrac{\mu(d)}{d^{k-1}}\right)\\
\end{aligned}
$$
根据 $\mu$ 函数的狄利克雷级数上面式子等于 $\zeta^{-1}(k)+\mathcal O(n^{-1})$,现在把 $n$ 拉满就可以得到答案是 $\zeta^{-1}(k)$。
**练习 3.10** 可以直接暴力推。
$$
\begin{aligned}
&\sum_{\substack{x_1,x_2,\cdots,x_n \ge 1\\\gcd(x_1,x_2,\cdots,x_n)=1}}x_1^{-s_1}x_2^{-s_2}\cdots x_n^{-s_n}\\
={}&\sum_{d \ge 1}\mu(d)\sum_{d \mid x_1}x_1^{-s_1}\sum_{d \mid x_2}x_2^{-s_2}\cdots\sum_{d \mid x_n}x_n^{-s_n}\\
={}&\sum_{d \ge 1}\dfrac{\mu(d)}{d^{\Sigma s}}\sum_{x_1 \ge 1}x_1^{-s_1}\sum_{x_2 \ge 1}x_2^{-s_2}\cdots\sum_{x_n \ge 1}x_n^{-s_n}\\
={}&\dfrac{\Pi\zeta(s)}{\zeta(\Sigma s)}
\end{aligned}
$$
其中 $\Pi\zeta(s)$ 是所有 $\zeta(s_k)$ 的乘积,$\Sigma s$ 是所有 $s_k$ 的和。
比较有意思的是当 $s_k$ 全部为偶数时,因为 $\zeta(2n)=\dfrac{(-1)^{n+1}(2\pi)^{2n}B_{2n}}{2(2n)!}$($B$ 是伯努利数),而所有 $\pi$ 都约掉了,所以答案是个有理数:
$$\sum_{\substack{x_1,x_2,\cdots,x_n \ge 1\\\gcd(x_1,x_2,\cdots,x_n)=1}}x_1^{-2s_1}x_2^{-2s_2}\cdots x_n^{-2s_n}=\dfrac{2(2\Sigma s)!}{(-2)^nB_{2\Sigma s}}\prod_{k=1}^n\dfrac{B_{2s_k}}{(2s_k)!}$$
**练习 5.1** 因为 $\mathrm d=\mathbf 1*\mathbf 1$,所以答案就是 $2\displaystyle\sum_{k \le \sqrt n}\left\lfloor\frac{n}{k}\right\rfloor-\lfloor\sqrt n\rfloor^2$。
**练习 5.2** 暴力展开可以得到 $\displaystyle\sum_{k \ge 1}\left\lfloor\dfrac{n}{k}\right\rfloor=n\log n+\mathcal O(n)$,但是精确度并不能够接受。
现在利用练习 5.1 的结果再次进行展开,答案为 $2n\displaystyle\sum_{k \le \sqrt n}\dfrac{1}{k}-n+\mathcal O(\sqrt n)=n\log n+(2\gamma-1)n+\mathcal O(\sqrt n)$。
# $\frak{Notae}$ 注释
$[1]$ $\text{Johann Peter Gustav Lejeune Dirichlet}^{\text{DE /ləˈʒœn diʁiˈkleː/}}\text{(1805-1859)}$,德国数学家(姓 $\text{Lejeune Dirichlet}$ 来自法语)。
$[2]$ $\text{Leonhard Euler}^{\text{DE-CH /ˈleːɔnhart ˈɔʏlər/}}\text{(1707-1783)}$,瑞士数学家与自然科学家。
$[3]$ 来自拉丁语 $\text{totiēns}$,由英国数学家 $\text{James Joseph Sylvester(1814-1897)}$ 命名。
$[4]$ $\text{August Ferdinand Möbius}^\text{{DE /ˈmøːbiʊs/}}\text{(1790-1868)}$,德国数学家。也发现了著名的莫比乌斯环。
$[5]$ $\chi$ 是希腊语 $\text{χαρακτήρ}$(character 的词源)的首字母。
$[6]$ $\text{Joseph Liouville}^{\text{FR /ʒɔzɛf ljuvil/}}\text{(1809-1882)}$,法国数学家。
$[7]$ $\text{Franciszek Karol Józef Mertens}^{\text{PL /ˈmɛrtɛns/}}\text{(1840-1927)}$,波兰数学家。
$[8]$ $\text{Georg Friedrich Bernhard Riemann}^{\text{DE /ˈbɛʁnhaʁt ˈʁiːman/}}\text{(1826-1866)}$,德国数学家。
$[9]$ $\text{Eric Temple Bell(1883-1960)}$,苏格兰数学家。也是组合数学中贝尔数$\text{(Bell number)}$的发现者。
$[10]$ $\text{Hans Carl Friedrich von Mangoldt}^{\text{DE /fɔn ˈmanɡɔlt/}}\text{(1854-1925)}$,德国数学家。