[突发奇想]重推min_25

牢骚和推导

忘记 \(\tt min\_25\) 了,重新推一遍,顺便理清思路。

对于一个函数 \(f(x)\),它是一个积性函数,并且 \(f(p),f(p^k)\) 都比较好得到,现在问 \(F(i)=\sum_{i=1}^nf(i)\).

对于 \(F\),我们分质数、合数与 \(1\) 三种情况考虑,就有

\[F(n)=\sum_{i=1}^{p_i\le n}f(p_i)+\sum_{x=2,x\notin \Bbb P}^{n}f(x)+f(1) \]

对于合数部分,我们改写一下,有

\[\begin{aligned} &\sum_{x=2 \\x\notin \Bbb P}^{n}f(x) \\ =&\sum_{i=1}^{p_i\le n}\sum_{k=1}^{p_i^k\le n}f(p_i^k)\left( \sum_{x=1,\text{minp}(x)>p_i}^{\left\lfloor{n\over p_i^k}\right\rfloor}f(x)+[k\neq1]f(1) \right) \\ \end{aligned} \]

然后我们定义 \(S(n,j)\) 表示所有 \((1,n]\) 以内的,最小质因数大于 \(p_j\) 的数的函数值之和,那么就有

对于这个 \(S\) 的求值,我们也可以分成质数、合数两个部分考虑,定义 \(G(i)\) 表示 \([1,i]\) 中质数的函数值之和,那么有

\[\begin{aligned} S(n,j)&=G(n)-G(j)+\sum_{i=j+1}^{p_i\le n}\sum_{k=1}^{p_i^k\le n}f(p_i^k)\left( \sum_{x=1,\text{minp}(x)>p_i}^{\left\lfloor{n\over p_i^k}\right\rfloor}f(x)+[k\neq1]f(1) \right) \\ &=G(n)-G(j)+\sum_{i=j+1}^{p_i\le n}\sum_{k=1}^{p_i^k\le n}f(p_i^k)\left( S\left(\left\lfloor{n\over p_i^k}\right\rfloor,i\right)+[k\neq1]f(1) \right) \\ \end{aligned} \]

这个东西就可以递归做了,但是还有一个问题:这个 \(G\) 怎么处理?

定义 \(g(i,j)\) 表示 \([2,i]\) 以内的质数或者最小质因数大于 \(p_i\) 的数的函数值之和,不难发现,有边界情况

\[g(i,j)= \begin{cases} \sum_{k=2}^if(k) &j=0 \\ g(i-1,j) &i<p_j^2 \\ g(i,j-1)-f(p_j)\left(g\left(\left\lfloor{i\over p_j}\right\rfloor,j-1\right)-\sum_{k=1}^{k<j}f(p_k)\right) &i\ge p_j^2 \end{cases} \]

这个 \(g()\) 的递推过程,我们可以考虑成每一次筛,其实就是将当前最小的质数所拥有的一个合数筛掉,但是要注意筛这个质数的时候可能会把前面的质数重复筛,这个就要重新加上。至于为什么这里是 \(g\left(\left\lfloor{i\over p_j}\right\rfloor,j-1\right)\) 呢?因为我们是从 \(g(i,j-1)\) 中筛掉的,所以自然这里也是 \(j-1\) 了。

然后我们一直推进,直到某个时刻 \(p_j=P\)\(P\)\(\sqrt n\) 以内最大的质因数)时,就有 \(G(n)=g(n,P)\).

最后实现的时候,每个 \(f()\) 拆出来的单独的一项函数单独用一个 \(g()\) 进行计算,并且注意到这个递推关系是相邻之间的关系,所以只需要开一维数组。

一些感悟

重新推了一遍,还花了比较久的时间,但是重新理了一遍思路。

对于 \(g\),我们实际上只是想要 "质数" 的部分,但是无奈不能一次解决,所以就变成了 "质数以及最大质因数大于 \(p_j\) 的数的函数值之和",然后通过每次将 \(p_j\) 变大,逐一筛去一些以质数为基础的合数,最后得到我们想要的。

对于 \(S\),我们实际上想要的是 \(S(n,0)\),但是无奈这样的数太多了,我们就只好先定义其为 "最小质因数大于 \(p_j\) 的数的函数值之和",然后每次放低要求,最后得到我们想要的。

也就是说,对于 \(g\) 而言,我们实际上每次在筛掉一些数,对于 \(S\),我们每次都在加入一些数。

posted @ 2021-02-07 19:43  Arextre  阅读(42)  评论(0编辑  收藏  举报