前缀素数个数的一点想法
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)\) 把他们组合点积到一起按照对应的系数加到一起即可。
标签:前缀,limits,ln,sum,个数,sqrt,素数,inf,log From: https://www.cnblogs.com/pp-orange/p/18535923