min_25筛小记
不太清楚这东西的复杂度(
我们将这个题分成两个部分,先求所有质数的函数值之和,然后求所有数的函数值之和。
对于质数来说,这个函数就是一个多项式,将所有项分开考虑。我们假设现在所有数的函数都是这样的,只不过最后只保留质数的答案。
现在有一个很开脑洞的思路,就是设 \(S(n,k)\) 表示在前 \(n\) 个数中,是质数或者最小质因子大于 \(p_k\) 的数的函数值之和。我们让 \(S(n,k)\) 从 \(S(n,k-1)\) 转移过来,这样需要减去最小质因子恰好为 \(p_k\) 的合数,是 \(p_k(S(\frac{n}{p_k},k-1)-sp_{k-1})\),其中 \(sp_k\) 表示前 \(k\) 个质数的函数值之和。
这东西的复杂度是多少呢?首先我们发现 \(n\) 只有 \(\sqrt n\) 种取值,都是整除分块出来的。其次 \(p_k^2\leq n\),列出式子是 \(\int_{1}^{\sqrt n}\frac{\sqrt x}{\ln x}\,\mathrm{d}x+\int_{1}^{\sqrt n}\frac{\sqrt\frac{n}{x}}{\ln n-\ln x}\,\mathrm{d}x=O(\frac{n^{\frac{3}{4}}}{\ln n})\)。
然后考虑推广到一般的情况,这时候就不能把所有项拆开,要一起看。设 \(g_n\) 表示上面求出来的 \(\leq n\) 的质数的函数值之和,设 \(S(n,k)\) 表示前 \(n\) 个数中最小质因子大于 \(p_k\) 的数的函数值之和,先是大于 \(p_k\) 的质数,是 \(g_n-sp_k\),然后枚举最小的质因子 \(p_i\) 及其次数 \(e\),就从 \(f(p_k^e)(S(\frac{n}{p_k^e},i)+[e\not=1])\) 转移。其中加上 \(e\not =1\) 的意义是加上单纯是这个数的幂次的数的函数值和。直接从 \(S(n,0)\) 开始递归就行,时间复杂度据说也是 \(O(\frac{n^{\frac{3}{4}}}{\ln n})\) 的,有无懂哥教教证明。这一部分应该是可以和第一部分差不多做的,但是听说在现有数据范围下还跑不过直接递归?可能递归访问的状态数比较少?
另外这东西好像最有用的是第一部分,常常用来求区间质数信息啥的,比如这个,根据 submission 合理推断发现大概 1s 能跑 1e12。

浙公网安备 33010602011771号