Min_25 筛

· · 算法·理论

适用范围

筛出积性函数前缀和,即 \sum_{i=1}^{n}f(i)

条件:

时间复杂度是 \mathcal{O}(\dfrac{n^{3/4}}{\log n})。由于喵仔牛奶太菜,下文不提及复杂度的分析。

做法

Step 1

f(p)=f'_1(p)+f'_2(p)

用线性筛求出 1\sim \sqrt n 的素数的 f'_1(p),f'_2(p) 的值,记其中素数有 ct 个。

Step 2

g(n,x)=\sum_{i=1}^{n}[i\in P\lor \min_{p\mid i}p>P_x]f'(i)

有转移方程:

g(n,x-1) & P_x^2>n \\ g(n,x-1)-f'(P_x)\times(g(\lfloor\dfrac{n}{P_x}\rfloor,x-1)-\sum_{i=1}^{x-1}f'(P_i)) & P_x^2\le n \end{cases}

解释:

由于 \lfloor\dfrac{\lfloor\dfrac{n}{a}\rfloor}{b}\rfloor=\lfloor\dfrac{n}{ab}\rfloor,所以 n 只有 \mathcal{O}(\sqrt{n}) 种。具体地,n 总是可以被表示为 x\lfloor\dfrac{n}{x}\rfloor,其中 x\le\sqrt{n}

考虑初值 g(n,0) 如何求,这个相当于求 \sum_{\boldsymbol{i=2}}^{n}f'(i)(注意下界),我们之前已经要求了 $f'

注意到 $P_{ct}$ 是最大的满足 $P_{x}^2\le n$ 的素数,所以 $g(n,ct)=\sum_{i=1}^{n}[i\in P]f'(i)$,即**前缀所有素数的 $\boldsymbol{f'}$ 和**。 注意到我们是 $f(p)=f'_1(p)+f'_2(p)$,对 $f'_1,f'_2$ 分别求出 $g_1(n,x),g_2(n,x)$ 后,我们令 $g(n,x)=g_1(n,x)+g_2(n,x)$。 ## Step 3 我们设 $S(n,x)=\sum_{i=1}^{n}[\min_{p\mid i}p>P_x]f(i)$。 $$S(n,x)=g(n,ct)-\sum_{i=1}^{x}f'(P_i)+\sum_{i\in[x+1,ct]}\sum_{j\ge 1,P_i^j\le n}f(P_i^j)\times(S(\lfloor\dfrac{n}{P_i^j}\rfloor,i)+[j>1])$$ 解释: - 考虑素数的贡献,显然是 $g(n,ct)-\sum_{i=1}^{x}f'(P_i)$,后面的减法减去了 $\le x$ 的素数的贡献。**前面的计算都是为了这步。** - 要考虑的所有数的最小质因子都 $>P_x$,考虑枚举最小质因子 $P_i$ 与它的次数 $j$,贡献即为 $f(P_i^j)(S(\lfloor\dfrac{n}{P_i^j}\rfloor,i)+[j>1])$。后面的 $[j>1]$ 是因为我们不考虑 $1$,所以多了 $P_i^j$ 的贡献。 答案即为 $S(n,0)+1$。 ## 题目 ### P4213 【模板】杜教筛 莫比乌斯函数: - 对于素数 $p$,$\mu(p)=-1$,令 $f'(x)=1$; - 对于 $p^k$,$\mu(p^k)=0$。 欧拉函数: - $\varphi(p)=p-1$,令 $f'_1(x)=1,f'_2(x)=x$; - $\varphi(p^k)=p^k(1-\dfrac{1}{p})$。 ### P5325 【模板】Min_25 筛 - 对于素数 $p$,$f(p)=p(p-1)$,令 $f'_1(x)=x,f'_2(x)=x^2$。 - 对于 $p^k$,$f(p^k)=p^k(p^k-1)$。 ### [24.11.17 模拟赛] 集合操作 答案为 $\sum_{i=1}^{n}\frac{1}{d_i}$。 - 对于素数 $p$,$\frac{1}{d_p}=\frac{1}{2}$,令 $f'(p)=1$。 - 对于 $p^k$,$\frac{1}{d_{p^k}}=\frac{1}{k+1}$。