powerful number筛】的更多相关文章

Powerful Number 筛学习笔记 用途 \(Powerful\ number\) 筛可以用来求出一类积性函数的前缀和,最快可以达到根号复杂度. 实现 \(Powerful\ number\) 的定义是每个质因子次数都 \(\ge 2\) 的数. 有如下的性质: \(1\).一个 \(Powerful\ number\) 一定可以表示为 \(a^2b^3\) 的形式. \(2\).\(n\) 以内的 \(Powerful\ number\) 个数是 \(O(\sqrt n)\) 级别的.…
定义 Powerful Number(以下简称 PN)筛类似于杜教筛,可以拿来求一些积性函数的前缀和. 要求: 假设现在要求积性函数 \(f\) 的前缀和 \(F(n)=\sum_{i=1}^nf(i)\),需要存在一个函数 \(g\) 满足: \(g\) 是积性函数. \(g\) 易求前缀和. 对于质数 \(p\),\(g(p)=f(p)\) . Powerful Number 定义:每个质因子次数都 \(≥2\) 的数. 性质: 所有的 PN 都可以表示成 \(a^2b^3\). \(n\)…
心血来潮跑来实现以下这个东西 我们应该知道杜教筛的理论是 \(f * g=h\),那么问题在于如何找 \(g\). 之前的blog应该提到过可以令 \(g(p)=-f(p)\),这样一来 \(h\) 就只会在PN处有值.于是可以大力爆搜 \(h\),而 \(g\) 的块筛又很好处理. 但是这样复杂度会有一个下限为 \(O(n^{\frac 2 3})\),有没有办法去除呢? 办法是有的,反过来,设 \(h * g=f\). 此时我们构造 \(g(p)=f(p)\) 即可得到和上面相同的结论,但此…
好久没更博客了,先水一篇再说.其实这个做法应该算是杜教筛的一个拓展. powerful number的定义是每个质因子次数都 $\geq 2$ 的数.首先,$\leq n$ 的powerful number个数是 $O(\sqrt{n})$ 的,这是因为所有powerful number显然可以表示成 $a^2b^3$,所以个数不超过 $\sum_{i=1}^{\sqrt{n}} (n/i^2)^{1/3}$,积分积一下就算出来了.求所有 $\leq n$ 的powerful number只要暴…
Powerful Number   对于 \(n\in\mathbb N_+\),若不存在素数 \(p\) 使得 \(p\mid n~\land~p^2\not\mid n\),则称 \(n\) 为 Powerful Number.即,\(n\) 的每个素因子至少以二次的形式存在.不难发现,任何一个 Powerful Number \(n\) 都可以写成 \(a^2b^3~(a,b\in\mathbb N_+)\) 的形式(但不唯一).接下来,我们研究其在正整数前缀序列中出现次数的规模,有 \[…
我也不想学筛法了,可你考试时候出一个新筛法就不厚道了吧,我还开始以为这是杜教筛... $tips:$学完杜教筛立马学$Powerful \ Number$筛法,此筛法强悍如斯 $Powerful \ Number$筛法 算是杜教筛的究极版$?$ 考虑筛积性函数$f$前缀和 求函数$F(n)$ $F(n)=\sum_{i=1}^{n}f(i)$ 时间复杂度$O(\sqrt{n})$ 主要是基于$PN$的筛法 定义$:$ $PN:n$质因数分解,$n=\prod_{i=1}^{m}p_i^{e_i}…
算法原理 本文参考了 zzq's blog . \(\text{powerful number}\) 的定义是每个质因子次数都 \(\ge 2\) 的数,有个结论是 \(\ge n\) 的 \(\text{powerful number}\) 只有 \(\mathcal O(\sqrt n)\) 个,如何找这些数呢?用暴力 \(\text{dfs}\) 从小到达枚举质因子及其幂次即可(类似于 \(\text{min_25}\) 第二部分). 比如对于函数 \(F(p^q) = p^k\) 其中…
定义 对于一个正整数 \(n\) ,若完全分解之后不存在指数 \(=1\) ,则称 \(n\) 为 \(\text{Powerful Number}\) . 可以发现的是,在 \([1,n]\) 中,\(\text{Powerful Number}\) 的数量是 \(\sqrt n\) 级别的. Powerful Number 在求积性函数前缀和中的应用 假设给出积性函数 \(f(x)\) 要求 \(\sum_{i=1}^{n} f(i)\),我们可以考虑引入一个拟合函数 \(g(x)\) 使得…
题意:给定大整数n,求其质因数分解的最小质数幂 n<=1e18 思路:常规分解算法肯定不行 考虑答案大于1的情况只有3种:质数的完全平方,质数的完全立方,以及p^2*q^3,p,q>=1三种形式 前两种可以暴力判 第三种必定有一个小于10^(18/5)的因子,大概是3800 迭代分解,用vector存一下具体的情况 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned…
问题 定义 \(\sigma_k(n)\) 表示 \(n\) 的所有约数的 \(k\) 次方和,即 \[\sigma_k(n)=\sum_{d\mid n}d^k \] 问题:求 \(\sigma_k(1),\sigma_k(2),\cdots,\sigma_k(n)\) . 线性筛 素数:直接 \(k\) 次方 . 没有的素因子:乘 \(k\) 次方 . 素因子:除掉再 \(k\) 次方 . 看不懂可以看 BZOJ2813 题解 . 杜教筛 令 \(\operatorname{Id}_k(n)…