定义\(\pi_k(n)\)为质数的\(k\)次幂前缀和函数,即\(\pi_k(n)=\sum_{1\leq i\leq \pi(n)}p^k\)。特别地,\(\pi_0(n)=\pi(n)\),为质数计数函数。求\(\pi_k(n)\)。
解法
(若无特殊说明,下文中单独出现的\(p\)、\(q\)均为质数)
定义
-
记\(\delta(x)\)为\(x\)的最小质因子,\(\gamma(x)\)为\(x\)的最大质因子。
-
记\(cnt(x)\)为\(x\)的质因子个数。
-
\(S_k(n)\)为自然数幂和函数。\(S_k(n)=\sum_{1\leq i\leq n}i^k\)。
-
\(\phi_k\)为部分筛函数。\(\phi_k(n,a)=\sum_{\substack{1\leq x\leq n\\ \delta(x)> p_a}}x^k\)。
-
\(P_{s,k}(n,a)=\sum_{\substack{1\leq x\leq n\\ \delta(x)> p_a\\ cnt(x)=s}}x^k\)。
那么
\[\phi_k(n,a)=\sum_{s\geq 0}P_{s,k}(n,a)
\]
考虑素数\(B=p_a\),当\(n^\frac{1}{3}\leq B\leq n^\frac{1}{2}\)时,有
\[\phi_k(n,a)=P_{0,k}(n,a)+P_{1,k}(n,a)+P_{2,k}(n,a)=1+\pi_k(n)-\pi_k(p_a)+P_{2,k}(n,a)
\]
于是
\[\pi_k(n)=\phi_k(n)-P_{2,k}(n,a)+\pi_k(p_a)-1
\]
故只需要分别计算\(\pi_k(p_a)\)、\(P_{2,k}(n,a)\)、\(\phi_k(n,a)\)即可。
对于\(\pi_k(p_a)\)。线性筛即可。时间复杂度\(O(B)\)。
对于\(P_{2,k}(n,a)\)。根据定义有
\[P_{2,k}(n,a)=\sum_{\substack{p_a< p\leq q\\ pq\leq n}}(pq)^k
\]
注意到\(B< p\leq q< \left\lfloor\frac{n}{B}\right\rfloor\),于是线性筛预处理,然后枚举\(p\)计算所有可行的\(q\)的贡献,为
\[P_{2,k}(n,a)=\sum_{p_a< p\leq \sqrt{n}}p^k\left(\pi_k\left(\left\lfloor\frac{n}{p}\right\rfloor\right)-\pi_k(p-1)\right)
\]
时间复杂度\(O(\frac{n}{B})\)。
对于\(\phi_k(n,a)\)。根据容斥,容易得到递推式
\[\phi_k(n,a)=\phi_k(n,a-1)-p_a^k\phi\left(\left\lfloor\frac{n}{p_a}\right\rfloor,a-1\right)
\]
边界条件为
\[\phi_k(n,0)=S_k(n)
\]
考虑DFS计算该式。
若每次都递推到边界,有
\[\phi_k(n,a)=\sum_{\gamma(x)\leq p_a}\mu(x)x^kS_k\left(\left\lfloor\frac{n}{x}\right\rfloor\right)
\]
复杂度难以接受,考虑剪枝。
加入\(x> B\)时停止递归的剪枝,有
\[\phi_k(n,a)=\sum_{x\leq B}\mu(n)x^kS_k\left(\left\lfloor\frac{n}{x}\right\rfloor\right)+\sum_{\frac{x}{\delta(x)}\leq B< x}\mu(x)x^k\phi_k\left(\left\lfloor\frac{n}{x}\right\rfloor,\pi(\delta(x))-1\right)
\]
令
\[\mathcal{S_0}=\sum_{x\leq B}\mu(n)x^kS_k\left(\left\lfloor\frac{n}{x}\right\rfloor\right)
\]
\[\mathcal{S}=\sum_{\frac{x}{\delta(x)}\leq B< x}\mu(x)x^k\phi_k\left(\left\lfloor\frac{n}{x}\right\rfloor,\pi(\delta(x))-1\right)
\]
那么
\[\phi_k(n,a)=\mathcal{S_0}+\mathcal{S}
\]
对于\(\mathcal{S_0}\),线性筛预处理后\(O(B)\)计算即可。
对于
\[\mathcal{S}=-\sum_{p\leq B}\sum_{\substack{\delta(x)> p\\ x\leq B< xp}}\mu(x)p^kx^k\phi_k\left(\left\lfloor\frac{n}{xp}\right\rfloor,\pi(p)-1\right)
\]
分块计算。
令
\[\mathcal{S_1}=-\sum_{n^\frac{1}{3}< p\leq B}\sum_{\substack{\delta(x)> p\\ x\leq B< xp}}\mu(x)p^kx^k\phi_k\left(\left\lfloor\frac{n}{xp}\right\rfloor,\pi(p)-1\right)
\]
\[\mathcal{S_2}=-\sum_{n^\frac{1}{4}< p\leq n^\frac{1}{3}}\sum_{\substack{\delta(x)> p\\ x\leq B< xp}}\mu(x)p^kx^k\phi_k\left(\left\lfloor\frac{n}{xp}\right\rfloor,\pi(p)-1\right)
\]
\[\mathcal{S_3}=-\sum_{p\leq n^\frac{1}{4}}\sum_{\substack{\delta(x)> p\\ x\leq B< xp}}\mu(x)p^kx^k\phi_k\left(\left\lfloor\frac{n}{xp}\right\rfloor,\pi(p)-1\right)
\]
那么
\[\mathcal{S}=\mathcal{S_1}+\mathcal{S_2}+\mathcal{S_3}
\]
对于\(\mathcal{S_1},\mathcal{S_2}\),注意到\(\delta(x)> p> n^\frac{1}{4}\)且\(x\leq B\leq n^\frac{1}{2}\)。于是\(x\)只能为质数。
于是
\[\mathcal{S_1}=\sum_{n^\frac{1}{3}< p\leq B}\sum_{p< q\leq B}p^kq^k\phi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor,\pi(p)-1\right)
\]
\[\mathcal{S_2}=\sum_{n^\frac{1}{4}< p\leq n^\frac{1}{3}}\sum_{p< q\leq B}p^kq^k\phi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor,\pi(p)-1\right)
\]
对于\(\mathcal{S_1}\)。由于\(\left\lfloor\frac{n}{pq}\right\rfloor< n^\frac{1}{3}< p\),所以\(\phi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor,\pi(p)-1\right)=1\)
于是
\[\mathcal{S_1}=\sum_{n^\frac{1}{3}< p\leq B}\sum_{p< q\leq B}p^kq^k=\sum_{n^\frac{1}{3}< p\leq B}p^k(\pi_k(B)-\pi_k(p))
\]
时间复杂度\(O(B)\)。
对于\(\mathcal{S_2}\),考虑分成两个部分计算。令
\[\mathcal{U}=\sum_{n^\frac{1}{4}< p\leq n^\frac{1}{3}}\sum_{\substack{p< q\leq B\\ q> \frac{n}{p^2}}}p^kq^k\phi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor,\pi(p)-1\right)
\]
\[\mathcal{V}=\sum_{n^\frac{1}{4}< p\leq n^\frac{1}{3}}\sum_{\substack{p< q\leq B\\ q\leq \frac{n}{p^2}}}p^kq^k\phi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor,\pi(p)-1\right)
\]
那么\(\mathcal{S_2}=\mathcal{U}+\mathcal{V}\)。
对于\(\mathcal{U}\),因为\(q> \frac{n}{p^2}\),所以有\(p> \sqrt{\frac{n}{q}}\geq \sqrt{\frac{n}{B}}\)。同时,由于\(\left\lfloor\frac{n}{pq}\right\rfloor<p\),所以\(\phi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor,\pi(p)-1\right)=1\)。
于是
\[\mathcal{U}=\sum_{\sqrt{\frac{n}{B}}< p\leq n^\frac{1}{3}}\sum_{\substack{p< q\leq B\\ q> \frac{n}{p^2}}}p^kq^k=\sum_{\sqrt{\frac{n}{B}}< p\leq n^\frac{1}{3}}p^k\left(\pi_k(B)-\pi_k\left(\min\left\{p,\left\lfloor\frac{n}{p^2}\right\rfloor\right\}\right)\right)
\]
时间复杂度\(O(B)\)。
对于\(\mathcal{V}\),我们有\(p\leq \frac{n}{pq}< \sqrt{n}< p^2\),所以\(\phi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor,\pi(p)-1\right)=1+\pi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor\right)-\pi_k(p)+p^k\)。
于是把\(\mathcal{V}\)分成两个部分计算。令
\[\mathcal{V_1}=\sum_{n^\frac{1}{4}< p\leq n^\frac{1}{3}}p^k(1-\pi_k(p)+p^k)\sum_{\substack{p< q\leq B\\ q\leq \frac{n}{p^2}}}q^k
\]
\[\mathcal{V_2}=\sum_{n^\frac{1}{4}< p\leq n^\frac{1}{3}}p^k\sum_{\substack{p< q\leq B\\ q\leq \frac{n}{p^2}}}q^k\pi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor\right)
\]
那么\(\mathcal{V}=\mathcal{V_1}+\mathcal{V_2}\)。
对于\(\mathcal{V_1}\),直接枚举\(p\)计算即可。
对于\(\mathcal{V_2}\),用类似数论分块的方法计算。枚举\(p\),对于所有\(\pi_k\left(\left\lfloor\frac{n}{pq}\right\rfloor\right)\)相同的\(q\)一起统计贡献,可以证明最多只有\(\pi\left(\left\lfloor\frac{n}{p^2}\right\rfloor\right)\),个状态。于是时间复杂度为\(O\left(\frac{n^\frac{2}{3}}{\log n}\right)\)。
对于\(\mathcal{S_3}\),枚举\(p\),用树状数组统计其对所有有用的\(\phi_k\)的贡献。时间复杂度为\(O\left(\frac{n}{B}\log n\right)\)。
时间复杂度
取\(B=O(n^\frac{1}{3}\log^2 n)\)时总复杂度达到最优,为\(O\left(\frac{n^\frac{2}{3}}{\log n}\right)\)。
(将\(\mathcal{V_2}\)分成5个部分计算可进一步将时间复杂度优化至\(O\left(\frac{n^\frac{2}{3}}{\log^2 n}\right)\),在此不过多叙述)。
(实际上由于常数原因,在\(n\leq 10^{11}\)范围内跑得不如\(O\left(\frac{n^\frac{3}{4}}{\log n}\right)\)的递推做法或\(O(n^\frac{2}{3})\)的树状数组优化做法快)。
代码咕咕咕。
参考文献: