这种神仙东西不写点东西一下就忘了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)\)里包含了质数,而\(<p_j\)的质数是不能算的,所以要减掉。