UOJ#188. 【UR #13】Sanrd(min25筛)
题目链接:https://uoj.ac/problem/188
题目大意:定义数论函数 f ( x ) f(x) f(x) 的值为 x x x 的第二大质因子,其中质因子可以重复贡献,例如 f ( 36 ) = 3 f(36)=3 f(36)=3 ,且当且仅当 x ∈ p r i m e o r x = 1 , f ( x ) = 0 x\in prime\space or\space x=1,f(x)=0 x∈prime or x=1,f(x)=0 。给定区间 [ l , r ] [l,r] [l,r] ,求 ∑ i = l r f ( i ) \sum\limits_{i=l}^rf(i) i=l∑rf(i) 的值。
题解:对于这样的一个数论函数,显然我们几乎是无法构造合适的数论函数 g ( x ) g(x) g(x) ,使得能够利用杜教筛去求 f ( x ) f(x) f(x) 的前缀和。那我们要往min25筛的解决方向去想,但这个函数并不是积性函数,要如何魔改我们的min25筛,从而可以求出这样一个怪异的函数的前缀和呢?回想一下min25筛中 S ( i , j ) S(i,j) S(i,j) 的转移式,我们有 S ( i , j ) = g [ i ] − s u m [ j ] + ∑ k = j + 1 n u m ∑ r = 1 p k r ≤ i f ( p k r ) ( S ( ⌊ i p k r ⌋ , k ) + [ r > 1 ] ) S(i,j)=g[i]-sum[j]+\sum\limits_{k=j+1}^{num}\sum\limits_{r=1}^{p_{k}^{r}\leq i}f(p_k^r)(S(\lfloor\frac{i}{p_{k}^{r}}\rfloor,k)+[r>1]) S(i,j)=g[i]