【Learning】积性函数前缀和——洲阁筛(min_25写法)
问题描述 洲阁筛解决的问题主要是$n$范围较大的积性函数前缀和。 已知一积性函数$f(i)$,求$\sum_{i=1}^nf(i)$。 $n\leq10^{12}$. 求解方法 如果$f(i)$在质数处的取值比较简单,那么可以运用洲阁筛来求解。 我们需要两个辅助数组。 $g_{i,j}$ 定义如下: $$ \begin{aligned} g_{i,j}&=\sum_{k=2}^i[k与p_1,p_2,...,p_j互质或就是其中某个质数]; s(k)\ &=\sum_{k=2}^i[k是\leq p_j的质数或k的最小质因子大于p_j]; s(k) \end{aligned} $$ 其中$s(x)$是一个完全积性函数,它可以是$s(x)=x$,或$s(x)=1$,等等。 我们一般要求第二维计算到$m$,其中$m$为满足$p_m\le\sqrt n$的最大正整数。 这时候,$g_{x,m}$就表示 函数$s$在前缀范围$[1,x]$内的质数处的取值之和 ,这也是$g$数组的主要作用。但这里$x$的定义域不是$[1,n]$,下文会提到。 这个数组怎么求呢? 首先边界条件比较简单: $$ g_{i,0}=\sum_{k=2}^is(k) $$