狄利克雷生成函数
对于无穷序列 \(f_1,f_2,...\) ,定义其狄利克雷生成函数为:
(全文都是以 DGF 为基础)
如果序列 \(f\) 满足积性:\(\forall i\perp j,f_{ij}=f_if_j\) ,那么其 DGF 可以有质数幂处的取值表示
对于两个序列 \(f,g\) ,其 DGF 之积对应的是两者的狄利克雷卷积序列的 DGF
常见积性函数的 DGF
黎曼函数
-
序列 \([1,1,...]\) 的 DGF 是 \(\sum_{i \ge 1 }\frac{1}{i^x}=\zeta(x)\)
-
由于满足积性,因此可以得到 \([1,1,...]\) 的 DGF 的另一种形式:
莫比乌斯函数
- 对于莫比乌斯函数 \(\mu\),它的 DGF 定义为
- \(M(x)\) 在 DGF 下是全 1 序列的逆元,那么 \(M(x)\zeta(x)=1\)
欧拉函数
- 它的 DGF 定义为
- 那么可以发现 \(\Phi(x)=\frac{\zeta(x-1)}{\zeta{x}}\)
幂函数
- 对于 \(I_k(n)=n^k\) ,它的 DGF 的定义为
- 根据定义容易证明 \(\varphi(x)*1=I\) ,因为 \(\Phi(x)\zeta(x)=\zeta(x-1)=I\)
其他函数
-
对于约数幂函数 \(\sigma_k(n)=\sum_{d|n} d^k\) ,它的狄利克雷卷积的形式:\(S(x)=\zeta(x-k)\zeta(x)\)
-
对于 \(u(n)=|\mu(n)|\) (无平方因子数),它的 DGF 为 \(U(x)=\prod_{p\in P}(1+p^{-x})=\frac{\zeta(x)}{\zeta(2x)}\)
积性函数的逆元仍然是积性函数
Dirichlet 卷积
定义
- 对于两个数论函数 \(f(x)\) 和 \(g(x)\) ,则它们的狄利克雷卷积得到的结果 \(h(x)\) 定义为:
-
上式可以简记为 \(h=f*g\)
-
两个 DGF 的积对应两者的狄利克雷卷积的狄利克雷生成函数
性质
-
交换律
-
结合律
-
分配律
-
等式的性质:\(f=g\) 的充要条件是 \(f*h=g*h\) ,其中数论函数 \(h(1)\ne 0\)
单位元
单位函数 \(\varepsilon\) 是 Dirichlet 卷积运算中的单位元,即对于任何数论函数 \(f\) ,都有 $f*\varepsilon=f $
单位元在卷积运算中不是常函数,但是在狄利克雷生成函数中等价于常数 1
卷积运算中数论函数常函数 1 ,在狄利克雷生成函数中等价于黎曼函数 \(\zeta\)
逆元
对于任何一个满足 \(f(1)\ne 0\) 的数论函数,如果有另一个数论函数 \(g(x)\) 满足 \(f*g=\varepsilon\)
,则 $ g(x)$ 为 \(f(x)\) 的逆元,由 等式的性质 可知,逆元唯一
卷积运算中的逆元,相当于狄利克雷生成函数中的倒数运算
- 容易构造出 \(g(x)\) 的表达式为:
- 考虑将 \(g(x)f(1)=..\) .就知道为什么了
重要结论
-
两个积性函数的狄利克雷卷积仍然是积性函数
-
积性函数的逆元也是积性函数
例题
LGP2257 YY 的 GCD
-
就是求 \(\sum_{i=1}^{i=n}\sum_{j=1}^{j=m} [\gcd(i,j)是素数]\)
-
一个常见的想法是枚举 \(\gcd(i,j)\) ,这里提供另一种想法
-
对于 \(\gcd(i,j)\) 有一个性质 \(\gcd(i,j)|i,\gcd(i,j)|j\)
-
那么如果一个函数关于 \(\gcd(a,b)\) 的函数 \(f(\gcd(a,b))=\sum_{d|a}\sum_{d|b}g(d)\)
-
假如这个 \(f\) 很好求,那么就可以预处理出 \(g\) ,然后将式子里面的 \(f\) 都换成 \(g\)
-
这里的 \(f\) 显然是是否为质数,那么我们需要构造一个 \(g\) ,使得 \(f=g*1\) ,这样就能通过反演预处理出 \(g=\mu * f\)
-
现在我们预处理出了 \(g\) ,那么原式就变成了 \(\sum_{i=1}^{i=n}\sum_{j=1}^{j=m}\sum_{d|i}\sum_{d|j} g(d)\)
-
这个式子就很熟悉了,枚举 \(d\) 然后数论分块
简单题
-
求 \(\sum_{i=1}^n\sum_{j=1}^m \gcd(i,j)\)
-
\(T\leq 10^4,n,m\leq 10^6\) ,答案取模
-
这次的 \(f=\operatorname{id}\) ,那么 \(g=\varphi\)
-
那么就是求 \(\sum_{i=1}^n\sum_{j=1}^m \sum_{d|i}\sum_{d|j} \varphi(d)\)
-
这个就是我们很熟悉的形式了
难题
-
(还是来凑数的题) -
给出数列 \(f_1...f_n\)
-
每次问 \(\sum_{i=1}^n\sum_{j=1}^m f_{\gcd(i,j)}\)
-
你是不是在想 \(\sum_{i=1}^n\sum_{j=1}^m f_{\sum_{d|i}\sum_{d|j}\varphi(d)}\)
-
不不不,我们将整个 \(f_{\gcd(i,j)}\) 看成函数,那么构造 \(g=\mu *f\) ,这个东西可以直接通过定义来求
-
那么就可以直接转换成 \(\sum_{i=1}^n\sum_{j=1}^m \sum_{d|a}\sum_{d|b} g(d)\)
-
是不是突然发现这方法是真的好用!!