Powerful Number 筛
Powerful Number 是一种奇特的亚线性数论筛。
我们先来定义 Powerful Number:如果一个正整数 \(n\) 的标准分解为:
\[n=\sum p_i^{k_i}
\]
且满足 \(\forall i,\ k_i\geq 2\),那么我们就称 \(n\) 为一个 Powerful Number。
那么我们一定可以把 \(n\) 表为 \(n=a^2b^3\) 的形式。由此我们可以知道,\(\leq n\) 的 Powerful Number 个数为:
\[\int_1^\sqrt n(\frac n{x^2})^{1/3}\ \mathrm dx=\mathcal O(\sqrt n)
\]
这是一切的基础。
现在考虑我们要筛某个积性函数 \(f\),我们先找到另一个容易得到前缀和的积性函数 \(g\),满足
\[g(p)=f(p)
\]
然后这时候我们再假设 \(f=g\otimes h\),那么一定有:
\[f(p)=g(p)h(1)+g(1)h(p)=f(p)+h(p)
\]
也即
\[h(p)=0
\]
那么可以推知,仅当 \(n\) 为 Powerful Number 时,才有 \(h(n)\neq 0\),那么有值的 \(h\) 其实只有 \(\mathcal O(\sqrt n)\) 种。
现在来考虑 \(f\) 的前缀和:
\[\begin{aligned}
\sum_{n=1}^Nf(n)&=\sum_{n=1}^N\sum_{d\mid n}g(d)h(\frac nd)\\
&=\sum_{d=1}^N h(d)\sum_{k=1}^{N/d}g(k)
\end{aligned}
\]
于是枚举每个可能的 \(h\),递推计算取值,暴力计算即可。
一些具体的应用可以参见一类积性函数的特殊前缀和问题。