min25筛又双叒叕忘了!重新学一遍。
https://blog.csdn.net/qq_39972971/article/details/81543972
我们要求i=1∑nfi,其中i=1∑nfi[isprimei]可以由i=1∑nik[isprimei]简单表示。
考虑类似埃筛的过程。
我们令F(n,i)=j=1∑nfj[minj≥primei]
那么我们要求的就是F(n,1)+f1
F(n,i)怎么算?当primei>n时,F(n,i)=0。
否则,先考虑其中质数的贡献:j=1∑nfi[isprimej]−j=1∑i−1fprimej
然后考虑合数的贡献。暴力枚举minj和他是minj的几次方:
j=i∑primej2≤nk=1∑primejk+1≤nF(⌊primejkn⌋,j+1)∗fprimejk+fprimejk+1
这个柿子看起来非常复杂,其实非常显然(那我为啥还忘了)。
综上,primej≤i时,F(n,i)=j=1∑nfi[isprimej]−j=1∑i−1fprimej+j=i∑primej2≤nk=1∑primejk+1≤nF(⌊primejkn⌋,j+1)∗fprimejk+fprimejk+1
注意我们