min_25筛

min_25筛

设有积性函数f(x)f(x)f(x),满足f(Pi)f(P_i)f(Pi)是多项式,且能够快速计算出f(Pik)f(P_i^k)f(Pik)。求其前缀和。

一个函数

minp(x)minp(x)minp(x)表示xxx的最小质因子。令PPP为质数集,其中第111个元素为222。设g(n,j)=∑i=1nf(i)[i∈P∨minp(i)>Pj]g(n,j)=\sum_{i=1}^nf(i)[i\in P\lor minp(i)>P_j]g(n,j)=i=1nf(i)[iPminp(i)>Pj]

考虑从g(n,j−1)g(n,j-1)g(n,j1)推到g(n,j)g(n,j)g(n,j)。这个过程相当于删去那些最小质因数为PjP_jPj的合数。也就是说,这些数除以PjP_jPj后的最小质因数还是大于Pj−1P_{j-1}Pj1的。那要删去的数的答案就是f(Pj)⋅g(nPj,j−1)f(P_j)\cdot g(\frac{n}{P_j},j-1)f(Pj)g(Pjn,j1)吗?发现这时还多删了除以PjP_jPj后比PjP_jPj小的质数的答案,因此把这部分补回去。则转移就是g(n,j)=g(n,j−1)−f(Pj)⋅[g(nPj,j−1)−g(Pj−1,j−1)]g(n,j)=g(n,j-1)-f(P_j)\cdot [g(\frac{n}{P_j},j-1)-g(P_j-1,j-1)]g(n,j)=g(n,j1)f(Pj)[g(Pjn,j1)g(Pj1,j1)]
这个是没有特判各种情况时的转移。首先,若Pj2>nP_j^2>nPj2>n,则显然这次什么也删不了,即g(n,j)=g(n,j−1)g(n,j)=g(n,j-1)g(n,j)=g(n,j1)。另外还有边界,即g(Pj,j)=∑i=1jf(Pj)g(P_j,j)=\sum_{i=1}^jf(P_j)g(Pj,j)=i=1jf(Pj)

如果我们要计算g(n,m)g(n,m)g(n,m),则我们只需要对n\sqrt nn内的质数计算即可。该部分的复杂度为O(n34log⁡n)O(\frac{n^{\frac{3}{4}}}{\log n})O(lognn43)

另一个函数

S(n,j)=∑i=1nf(i)[minp(i)≥Pj]S(n,j)=\sum_{i=1}^nf(i)[minp(i)\ge P_j]S(n,j)=i=1nf(i)[minp(i)Pj]。则fff的前缀和就是S(n,1)+f(1)S(n,1)+f(1)S(n,1)+f(1)

先预处理要求范围内的ggg。考虑如何转移SSS,将答案为质数的答案和合数的答案,其中质数直接计算,合数递归计算。质数的答案可以由ggg算出,是g(n,j)−∑i=1j−1f(Pi)g(n,j)-\sum_{i=1}^{j-1}f(P_i)g(n,j)i=1j1f(Pi)。对于合数,枚举其最小质因子及其出现次数。转移为S(n,j)=g(n,j)−∑i=1j−1f(Pi)+∑k=jPk2≤n∑l=1Pkl+1≤nf(Pkl)⋅S(nPkl,k+1)+f(Pkl+1)S(n,j)=g(n,j)-\sum_{i=1}^{j-1}f(P_i)+\sum_{k=j}^{P_k^2\le n}\sum_{l=1}^{P_k^{l+1}\le n}f(P_k^l)\cdot S(\frac{n}{P_k^l},k+1)+f(P_k^{l+1})S(n,j)=g(n,j)i=1j1f(Pi)+k=jPk2nl=1Pkl+1nf(Pkl)S(Pkln,k+1)+f(Pkl+1)
总复杂度为O(n34log⁡n)O(\frac{n^{\frac{3}{4}}}{\log n})O(lognn43)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值