ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【学习笔记】Powerful Number 筛

2022-07-27 15:05:59  阅读:161  来源: 互联网

标签:frac 前缀 sum Powerful Number varphi pmod2 笔记 PN


有力量的数字筛(?)

Powerful Number

有力量的数字(?)

定义一个数 \(n\) 为 Powerful Number(简称 PN),当且仅当 \(n\) 没有非平方因子。

也即,若 \(n=\prod p_i^{e_i}\),则 \(\forall e_i>1\)。

Lemma

保障 PN 筛时间复杂度的一个性质。

\(n\) 以内的 PN 个数为 \(O(\sqrt n)\)。

首先,考虑每个 PN 可以被表示为 \(a^3b^2\) 的形式,构造方法是质因数分解后,把幂次为奇数的质数分给 \(a^3\) 一个,剩下分给 \(b^2\)。枚举 \(b\) 然后积分就可以得到 PN 的数量:

\[\sum_{b=1}^{n^{1/2}}\left(\frac{n}{b^2}\right)^{1/3}\le\int_{1}^{n^{1/2}}\left(\frac{n}{x^2}\right)^{1/3}\text dx=O(\sqrt n) \]

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\) 的前缀和做一下变换:

\[\begin{aligned} \sum_{i=1}^nf(i)=&\sum_{i=1}^n\sum_{d\mid n}g(\frac nd)h(d)\\ =&\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac nd\rfloor}g(i)h(d)\\ =&\sum_{d=1}^nh(d)G(\lfloor\frac nd\rfloor) \end{aligned} \]

因为 \(h\) 仅在 \(O(\sqrt n)\) 个 \(d\) 值处有取值,可以直接搜索 \(d\) 的取值。

若 \(g\) 的前缀和能 \(O(1)\) 计算,则复杂度为 \(O(\sqrt n)\)。

\(h\) 的取值可以在特定题目直接推导,也可以记忆化后计算。通过定义式 \(f=g*h\) 得到 \(f(p^e)=\sum_{i=0}^eg(p^i)h(p^{e-i})\),移项得到 \(h(p^e)=f(p^e)-\sum_{i=1}^eg(p^i)h(p^{e-i})\) 即可计算。

Problems

P5325 【模板】Min_25筛

令积性函数 \(f(p^e)=p^e(p^e-1)\),求 \(f\) 前缀和。

在质数处,构造 \(g=\text{id}\cdot\varphi\) 拟合 \(f\)。\(g\) 可以通过杜教筛求前缀和。注意到式子所需要的 \(g\) 前缀和求一次 \(\sum_{i=1}^ng(i)\) 即可得到,因此复杂度瓶颈在这次杜教筛,总体复杂度为 \(O(n^{2/3})\)。

这题也可直接计算 \(h(p^e)=(e-1)(p-1)p^e\)。证明不写了。

record

Loj #6053. 简单的函数

定义积性函数 \(f\):

\[f(n)=\begin{cases}1&n=1\\p\oplus e&n=p^e\\f(a)f(b)&n=ab,a\perp b\end{cases} \]

求 \(f\) 前缀和。

异或有点烦。按奇偶性分类:

\[f(p)=\begin{cases}3&p=2\\p-1&p\not=2\end{cases} \]

构造 \(g\):

\[g(p)=\begin{cases}3\varphi(p)&p=2\\\varphi(p)&p\not=2\end{cases} \]

显然 \(g\) 为积性函数。考虑计算 \(g\) 的前缀和:

\[\begin{aligned} G(n)=&\sum_{i=1}^ng(i)\\ =&\sum_{i=1}^n[i\equiv1\pmod2]\varphi(i)+3\sum_{i=1}^n[i\equiv0\pmod2]\varphi(i)\\ =&\sum_{i=1}^n\varphi(i)+2\sum_{i=1}^n[i\equiv0\pmod2]\varphi(i)\\ =&\sum_{i=1}^n\varphi(i)+2\sum_{i=1}^{\lfloor\frac n2\rfloor}\varphi(2i)\\ =&S_1(n)+2S_2(\lfloor\frac n2\rfloor) \end{aligned} \]

\(S_1(n)=\sum_{i=1}^n\varphi(n)\),可以杜教筛。

\[\begin{aligned} S_2(n)=&\sum_{i=1}^n\varphi(2i)\\ =&\sum_{i=1}^n[i\equiv1\pmod2]\varphi(2i)+\sum_{i=1}^n[i\equiv0\pmod2]\varphi(2i)\\ =&\sum_{i=1}^n[i\equiv1\pmod2]\varphi(i)+2\sum_{i=1}^n[i\equiv0\pmod2]\varphi(i)\\ =&\sum_{i=1}^n\varphi(i)+\sum_{i=1}^n[i\equiv0\pmod2]\varphi(i)\\ =&S_1(n)+S_2(\lfloor\frac n2\rfloor) \end{aligned} \]

递归计算。

record

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 筛,注意幂次处理。

record

标签:frac,前缀,sum,Powerful,Number,varphi,pmod2,笔记,PN
来源: https://www.cnblogs.com/resorie/p/notes-PN.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有