前缀素数个数的一点想法

前缀素数个数的一点想法

idea from pp_orange, 08/11/24

首先对于狄利克雷卷积,我们有一种视角是设 \(f(x) = \sum\limits_{i=1}^{\inf} a_{i}x^{\ln i}\),这样我们直接多项式卷积就可以干狄利克雷卷积干的事情,而且方便让多项式的性质和处理手段直接嫁接到狄利克雷卷积上来。我们约定 \(p_i\) 是第 \(i\) 个质数。

\(S(x) = \sum\limits_{i=1}^{\inf}x^{\ln p_i},~~~I(x) = \sum\limits_{i=1}^{\inf} x^{\ln i},~~~~P_n(x)=\sum\limits_{i=0}^{\inf}x^{i\ln p_n},~~~~\epsilon(x)=x^{\ln 0}\)

我们寻找一下这些函数之间的关系,我们希望用 \(I(x)\) 去表示 \(S(x)\)

我们显然有:\(I(x) = \prod\limits_{i=1}^{\inf}P_i(x)\)

两边同时取 \(\ln\),得:

\[\begin{aligned} \ln I(x) &= \ln \prod\limits_{i=1}^{\inf}P_i(x) \\ &= \sum\limits_{i=1}^{\inf}\ln P_i(x)\\ &= \sum\limits_{i=1}^{\inf}\sum\limits_{j=1}^{\inf}\frac{x^{j\ln p_i}}{j}\\ &= \sum\limits_{j=1}^{\inf}\frac{1}{j}\sum\limits_{i=1}^{\inf}x^{j\ln p_i}\\ &= S(x)+\sum\limits_{j=2}^{\inf}\frac{1}{j}\sum\limits_{i=1}^{\inf}x^{j\ln p_i}\\ \end{aligned} \]

于是:

\[\begin{aligned} S(x) &= \ln I(x)-\sum\limits_{j=2}^{\inf}\frac{1}{j}\sum\limits_{i=1}^{\inf}x^{\ln p_i^j}\\ \end{aligned} \]

后面那一项都是平方以上的指数,所以数量很少(小于 \(O(\sqrt n)\)),暴力扣掉即可,于是问题转换为求解 \(\ln I(x)\)。考虑定义式:

\[\begin{aligned} \ln I(x) &= -\sum\limits_{i=1}^{\inf} \frac{(\epsilon(x)-I(x))^i}{i}\\ &= -\sum\limits_{i=1}^{\left \lfloor \log_2 n \right \rfloor} \frac{(\epsilon(x)-I(x))^i}{i}\\ \end{aligned} \]

zak 论文中的块筛卷积做到了 \(O(\sqrt n \log n \log \log n)\),而我们这个问题只需要 \(O(\log n)\) 次卷积,所以复杂度是 \(O(\sqrt n \log ^2 n \log \log n)\)。实际上进一步的,我们可以优化到 \(O(\sqrt n\log^{\frac{3}{2}}n\log \log n)\)

我们类比古老多项式复合逆从 \(O(n^2\log n)\)\(O(n^2+n\sqrt n \log n)\) 的优化路径,我们发现这个东西形式非常向复合逆,我们直接把 \((\epsilon(x)-I(x))^i\) 分解为 \((\epsilon(x)-I(x))^{ak+b}\) 的形式,其中 \(k\)\(O(\sqrt {\log n})\) 级别,我们花 \(O(\sqrt n\log^{\frac{3}{2}} n\log \log n)\) 的时间把 \((\epsilon(x)-I(x))^{ak}\)\((\epsilon(x)-I(x))^b\) 都处理出来,然后 \(O(\sqrt n \log n)\) 把他们组合点积到一起按照对应的系数加到一起即可。

最后的复杂度就定格在了 \(O(\sqrt n\log^{\frac{3}{2}} n\log \log n)\)

实际上这个在素数相关问题上还是很有延拓性的,我们实际上还可以求前缀素数和、前缀素数平方和,只需要把原文中的 \(I(x)\) 换掉即可。

posted @ 2024-11-08 21:07  皮皮的橙子树  阅读(43)  评论(0编辑  收藏  举报