狄利克雷生成函数也是生成函数啊(
对于数论函数 f,有狄利克雷生成函数 F(s)=∞∑n=1f(n)ns
注意到狄利克雷生成函数的卷积相当于数论函数的狄利克雷卷积,于是便是要求 Fk(x)=G(x)。
由于 F′(s)=∞∑n=1f(n)lnnns,设 f′(n)=f(n)lnn。
有 Fk(s)=G(s)[Fk(s)]′=G′(s)kFk−1(s)F′(s)=G′(s)kF′(s)G(s)F−1(s)=G′(s)F′(s)G(s)=1kF(s)G′(s)∑d|nf′(d)g(nd)=1k∑d|nf(d)g′(nd)f′(n)+∑d|n∧d<nf′(d)g(nd)=1k∑d|n∧d<nf(d)g′(nd)
考虑从 f(1) 开始递推即可。
然而我并没有写这个做法,而是使用了直接 ln/exp 的通解(
众所周知
lnF(s)=∫s0F′(x)F(x)dx
F(s) 的积分就每一项乘 ln−1n,因为是常数。
除法使用狄利克雷除法,通俗地说就是逆向狄利克雷卷积(可见代码)。
exp 的话,求导之后从 f(1)=1 狄利克雷卷积递推求 f′(n),然后积分即可。
然而发现一个问题。
模意义下哪来 lnn(
但是它毕竟是一个常数,那么注意到满足积的求导法则,即满足完全加性就不会出锅。
于是用质因子个数函数代替即可。
代码:
1 |
|