【学习笔记】Powerful Number 筛
有力量的数字筛(?)
Powerful Number
有力量的数字(?)
定义一个数 n 为 Powerful Number(简称 PN),当且仅当 n 没有非平方因子。
也即,若 n=∏peii,则 ∀ei>1。
Lemma
保障 PN 筛时间复杂度的一个性质。
n 以内的 PN 个数为 O(√n)。
首先,考虑每个 PN 可以被表示为 a3b2 的形式,构造方法是质因数分解后,把幂次为奇数的质数分给 a3 一个,剩下分给 b2。枚举 b 然后积分就可以得到 PN 的数量:
Description
求积性函数前缀和。
对于要求前缀和的积性函数 f,构造可以快速计算前缀和的拟合函数 g 使得 f(p)=g(p)。再构造 h 使得 f=g∗h。显然有 f(p)=g(p)h(1)+g(1)h(p),可得 h(p)=0。因此 h 仅在 1 和 PN 处有取值。然后把 f 的前缀和做一下变换:
因为 h 仅在 O(√n) 个 d 值处有取值,可以直接搜索 d 的取值。
若 g 的前缀和能 O(1) 计算,则复杂度为 O(√n)。
h 的取值可以在特定题目直接推导,也可以记忆化后计算。通过定义式 f=g∗h 得到 f(pe)=∑ei=0g(pi)h(pe−i),移项得到 h(pe)=f(pe)−∑ei=1g(pi)h(pe−i) 即可计算。
Problems
P5325 【模板】Min_25筛
令积性函数 f(pe)=pe(pe−1),求 f 前缀和。
在质数处,构造 g=id⋅φ 拟合 f。g 可以通过杜教筛求前缀和。注意到式子所需要的 g 前缀和求一次 ∑ni=1g(i) 即可得到,因此复杂度瓶颈在这次杜教筛,总体复杂度为 O(n2/3)。
这题也可直接计算 h(pe)=(e−1)(p−1)pe。证明不写了。
Loj #6053. 简单的函数
定义积性函数 f:
f(n)={1n=1p⊕en=pef(a)f(b)n=ab,a⊥b求 f 前缀和。
异或有点烦。按奇偶性分类:
构造 g:
显然 g 为积性函数。考虑计算 g 的前缀和:
S_1(n)=\sum_{i=1}^n\varphi(n),可以杜教筛。
递归计算。
Extend
有时候拟合函数 g 不是很好找。这时可以构造一个 g,使得 h=f/g 仅在少数位置有取值。
SP34112 UDIVSUM
\sigma^*(p^e)=p^e+1,求前缀和。
构造 g=\sigma,即约数和,可以数论分块 O(\sqrt n) 求。写 divcnt1 的都是狗
令 h=\sigma^*/\sigma,发现 h(1)=1,h(p^2)=-p,其余位置均无取值。于是可以 PN 筛,注意幂次处理。
本文作者:Sya_Resory
本文链接:https://www.cnblogs.com/resorie/p/notes-PN.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步