狄利克雷生成函数

由于太菜了没听懂,就去学了下用狄利克雷生成函数(DGF)的奇怪做法。

推导过程很繁琐,但个人感觉比min25筛好懂

P5325为例,考虑求积性函数\(\forall p\in Prime\space f(p^k)=p^k(p^k-1)\)的前缀和

前置知识:狄利克雷生成函数

\[\text{DGF}\{f_i\}=\sum_{i=1}^{\infty}{f_i \over i^x} \]

那么显然黎曼函数就是\(1\)的DGF:

\[\zeta(x)=\sum_{i=1}^\infty {1\over i^x} \]

常见数论函数的狄利克雷生成函数都可以自己手推,在这里给出一个欧拉函数的DGF来演示常规推导思路:

\[\text{DGF}\{\varphi\}\space(x)=\sum_{i=0}^{\infty}{\varphi(i)\over i^x} \]

由于欧拉函数的积性,考虑枚举质数:

\[=\prod_{p\in Prime}\sum_{i=0}^\infty {\varphi(p^i)\over p^{ix}} \]

\[=\prod_{p\in Prime}(1+\sum_{i=1}^\infty {\varphi(p^i)\over p^{ix}}) \]

\[=\prod_{p\in Prime}(1+\sum_{i=1}^\infty {p^{i-ix}}-\sum_{i=1}^\infty {p^{i-ix-1}}) \]

\[=\prod_{p\in Prime}(1+\sum_{i=1}^\infty {p^{i(1-x)}}-{1\over p}\sum_{i=1}^\infty {p^{i(1-x)}}) \]

\[=\prod_{p\in Prime}(1+{p^{1-x}\over 1-p^{1-x}}-{p^{-x}\over{1-p^{1-x}}}) \]

\[=\prod_{p\in Prime}{1-p^{-x}\over 1-p^{1-x}} \]

\[=\prod_{p\in Prime}{1-p^{-x}\over 1-p^{1-x}} \]

我们又有:

\[\zeta(x)=\sum_{i=1}^\infty {1\over i^x}=\prod_{p\in Prime}\sum_{i=0}^\infty {1\over p^{ix}}=\prod_{p\in Prime}{1\over 1-p^{-x}} \]

所以原式为:

\[=\prod_{p\in Prime}{{1\over \zeta(x)}\over{1\over \zeta(x-1)}}=\prod_{p\in Prime}{\zeta(x-1)\over\zeta(x)} \]

其实求DGF并不需要在每个值上都有显性的式子,只要\(f(p^k)\)有定义且为积性函数就,那么它的DGF就为:

\[\prod_{p\in Prime}\sum_{i=0}^\infty {f(p^i)\over p^{ix}} \]

关于这个DGF,还有一个重要性质:

\(\otimes\)表示狄利克雷卷积,则

\[\text{DGF}\{f\}\space \cdot \text{DGF}\{g\}=\text{DGF}\{f\otimes g\} \]

证明很显然:

\[\text{DGF}\{f\}\space \cdot \text{DGF}\{g\}=\sum_{i=1}^\infty {f(i)\over i^x} \cdot \sum_{i=1}^\infty {g(i)\over i^x}= \sum_{i=1}^\infty {\sum_{d|i}f(d)g({i\over d})\over i^x} = \text{DGF}\{f\otimes g\} \]

好了可以看题目了。在此会跳过一些冗杂步骤而只写出一些关键步骤。

先考虑求出\(f\)的DGF:

\[\sum_{i=1}^\infty {f(i)\over i^x} \]

\[=\prod_{p\in Prime}\sum_{i=0}^\infty {f(p^i)\over p^{ix}} \]

\[=\prod_{p\in Prime}(1+\sum_{i=1}^\infty {p^i(p^i-1)\over p^{ix}}) \]

\[=\prod_{p\in Prime}(1+\sum_{i=1}^\infty p^{i(2-x)}-\sum_{i=1}^\infty p^{i(1-x)})) \]

\[=\prod_{p\in Prime}(1+{p^{2-x}\over 1-p^{2-x}}-{p^{(1-x)}\over 1-p^{1-x}}) \]

里面的式子瞎化简完:

\[=\prod_{p\in Prime}{p^{3-2x}-2p^{1-x}+1\over(1-p^{2-x})(1-p^{1-x})} \]

仔细观察,分母实际上是\(1\over\zeta(x-2)\zeta(x-1)\)

所以原式为:

\[=\zeta(x-2)\zeta(x-1)\cdot\prod_{p\in Prime}{p^{3-2x}-2p^{1-x}+1} \]

我们左边看起来是个很清爽的式子,但右边很麻烦。我们DGF一般要弄成:

\[\prod_{p\in Prime}(1+\sum_{i=2}^\infty {f(p^i)\over p^{ix}}) \]

的形式。

右边那一坨,刚才手动展开了化简过程的应该可以看出来:

\[=\zeta(x-2)\zeta(x-1)\cdot\prod_{p\in Prime}{(1-p^{1-x})^2+p^{2(1-x)+1}-p^{2(1-x)}} \]

为了得到常数1,我们在里面除一个\((1-p^{1-x})^2\),相当于在外面乘了\((1-p^{1-x})^2\),式子变成:

\[={\zeta(x-2)\over\zeta(x-1)}\cdot\prod_{p\in Prime}1+{p^{2(1-x)+1}-p^{2(1-x)} \over (1-p^{1-x})^2} \]

把分式拆开,发现:

\[={\zeta(x-2)\over\zeta(x-1)}\cdot\prod_{p\in Prime}(1+\sum_{i=2}^\infty (i-1)(p^{i(1-x)+1}-(i-1)p^{i(1-x)})) \]

\[={\zeta(x-2)\over\zeta(x-1)}\cdot\prod_{p\in Prime}(1+\sum_{i=2}^\infty {{(i-1)(p^{i+1}-p^i)}\over p^{ix}}) \]

有什么用呢???

我们之前有性质,两函数DGF的乘积为两函数狄利克雷卷积的DGF。

令:

\[\text{DGF}\{g\}\space(x)={\zeta(x-2)\over\zeta(x-1)},\text{DGF}\{h\}\space(x)=\prod_{p\in Prime}(1+\sum_{i=2}^\infty {{(i-1)(p^{i+1}-p^i)}\over p^{ix}}) \]

那么\(f=g\otimes h\),则:

\[\sum_{i=1}^n f(i)=\sum_{i=1}^n \sum_{d|i}g(d)h({i\over d}) \]

\[=\sum_{d=1}^n h(d)\sum_{d|i}g({i\over d})=\sum_{d=1}^n h(d)\sum_{i=1}^{\lfloor{n\over d}\rfloor} g(i) \]

我们观察上面的DGF,显然可以得到\(h(p^i)=(i-1)(p^{i+1}-p^i)\),且\(f(p)=0\)

所以\(h(x)\)不为0的\(x\)必定是个Powerful Number,即每个质因子的次数都大于2.可以证明它的个数不超过\(\sqrt{n}\),我们可以打出质数表搜索,关键在求\(\sum_{i=1}^{\lfloor{n\over d}\rfloor} g(i)\)上。直接做很难搞。

考虑当\(p\in Prime\)时:

\[f(p)=p(p-1)=g(1)h(p)\cdot h(1)g(p)=g(p) \]

所以\(g(p)=p(p-1)\),同时他的DGF长的也很像\(\varphi\)的DGF,我们可以猜测\(g(x)=x\varphi(x)\),然后把它的DGF求出来发现是对的。而他的前缀和我们可以杜教筛。

这样就做完了。

posted @ 2021-06-19 16:16  Smallbasic  阅读(328)  评论(0)    收藏  举报