定義\(\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})\)的樹狀數組優化做法快)。
代碼咕咕咕。
參考文獻: