$Min\_25$篩學習筆記
阿新 • • 發佈:2018-12-25
這種神仙東西不寫點東西一下就忘了QAQ
\(Min\_25\)篩可以幹嘛?下文中未特殊說明\(P\)均指質數集合,\(p_i\)或\(p\)指某個具體質數。
求一類積性函式\(f(x)\)的字首和,需要滿足\(f(p)\)可以寫成多項式的形式,或者操作一下可以寫成多項式(如例題),且\(f(p^k)\)能快速求出。
講真學這個東西比我什麼都不會的時候學\(FFT\)都累。
Round 1
先求質數的貢獻。我們要求
\[\sum_{i=1}^x[i是質數]f(i)\]。
我們可以設
\[g(n,j)=\sum_{i=1}^{n}[i \in P \ or\ \min(p)>P_j]f(i)\]
注意到當\(p_j^2>x\)時,\(g(n,j)=g(n,j-1)\)因為沒有新的貢獻了,所以我們只要篩到\(\sqrt n\)的質數就可以了,這也是降低複雜度的關鍵。
我們還注意到\(g(n,|P|)=\sum_{i=1}^x[i是質數]f(i)\),\(|P|\)是\(\sqrt n\)內的質數集合大小。
關於\(g(n,i)\)的轉移,我們有:
\[g(n,j)=g(n,j-1)-f(P_j)[g(\frac{n}{P_j},j-1)-\sum_{i=1}^{j-1}f(P_i)],P_j^2\le n\]
意思大概就是減掉所有最小質因子為\(p_j\)的貢獻,但由於\(g(\frac n{p_j},j-1)\)