可以用来筛出一个积性函数的前缀和。这个积性函数要满足当\(x\)是质数时,\(f(x)\)可以快速求出,\(f(x^k)\)也可以快速算出。

首先我们要处理出一个\(g(x)=\sum_{x\in prime}f(x)\),处理这个的主要思想和埃氏筛法差不多。我们只要\(x\)是质数时候的值,那么,我先假设所有的数是质数,然后一步步筛掉不是质数的\(x\)的函数值。

具体地,先把\(\sqrt{ n }\) 以内的质数筛出来,我们设\(g(n,j)\)表示已经筛掉了\(n\)以内的,含有小于等于\(p_j\)的质因子的和数的答案。考虑从\(g(n,j-1)\)转移到\(g(n,j)\),也就是我们要把那些最小质因子是\(p_j\)的数的函数值从中剪掉。

如果\(p_j^2>n\), 那么就没有这样的数,所以\(g(n,j)=g(n,j-1)\)。所以\(p_j\)只要到枚举到\(\sqrt{n}\),\(g(\sqrt{n},|P|)\),就是最后的前缀和。

要不然就要减掉一些。因为这是积性函数,我们直接把质因子\(p_j\)提出来,乘上剩下的部分,也就是\(f(p_j)*[g(\frac{n}{p_j},j-1)-g(p_j-1,j-1)]\),后面减去的部分就是那些最小质因子比\(p_j\)小的。显然\(g(p_j-1,j-1)=\sum_{x\in prime}{f(x)}\),我们在筛质数的时候预处理一下。所以\(g(n,j)=g(n,j-1)-f(p_j)*[g(\frac{n}{p_j},j-1)-\sum_{x\in prime}f(x)]\)。

至于怎样实现,可以看看这个筛质数前缀和的代码。

#define id(x) ( (x)<=max_d?id1[x]:id2[d/(x)] )
__int128 cal(ll d)
{
cnt=0;
ll last;
__int128 now;
for(ll i=1;i<=d;i=last+1)
{
now=d/i;last=d/now;
num[++cnt]=now;
f[cnt]=now*(now+1)/2-1;
if(now<=max_d)id1[now]=cnt;
else id2[d/now]=cnt;
}
For(j,1,p[0])
{
__int128 m=(__int128)p[j]*p[j];
if(m>d)break;
for(int i=1;i<=cnt&&num[i]>=m;i++)
{
int t=id(num[i]/p[j]);
f[i]-=(__int128)p[j]*(f[t]-sum[p[j]-1]);
}
}
return f[id(d)];
}

有一个很神奇的结论,就是\(\lfloor \frac {n}{p_i*p_J}\rfloor=\lfloor \frac{\lfloor \frac{n}{p_i}\rfloor}{p_j}\rfloor\),所以我们只要把\(n\)的整除分块的那\(2\sqrt{n}\)个值全部处理出来就行了。

接下来,我们来计算一个积性函数的前缀和。设\(S(n,j)\)表示\(1\)到\(n\)的前缀和,并且含有\(>=p_j\)的质因子的和。

那么有\(S(n,j)=g(n,|P|)-\sum_{i=1}^{j-1} f(p_i)+\sum_{k>=j}\sum_{e}^{p_k^e<=n}(F(p_k^e)*S(\frac{n}{p_k^e},j+1)+F(p_k^{e+1}))\)。就是枚举最小质因子以及它的幂次,然后以后只能用\(>p_k\)的质因子。加上\(F(p_k^{e+1})\)是因为这一项枚举不到就要单独加上。

Min_25的更多相关文章

  1. 【UOJ448】【集训队作业2018】人类的本质 min_25筛

    题目大意 给你 \(n,m\),求 \[ \sum_{i=1}^n\sum_{x_1,x_2,\ldots,x_m=1}^i\operatorname{lcm}(\gcd(i,x_1),\gcd(i, ...

  2. Min_25 筛 学习笔记

    原文链接https://www.cnblogs.com/zhouzhendong/p/Min-25.html 前置技能 埃氏筛法 整除分块(这里有提到) 本文概要 1. 问题模型 2. Min_25 ...

  3. UOJ188 Sanrd Min_25筛

    传送门 省选之前做数论题会不会有Debuff啊 这道题显然是要求\(1\)到\(x\)中所有数第二大质因子的大小之和,如果不存在第二大质因子就是\(0\) 线性筛似乎可以做,但是\(10^{11}\) ...

  4. 【SPOJ】DIVCNTK min_25筛

    题目大意 给你 \(n,k\),求 \[ S_k(n)=\sum_{i=1}^n\sigma_0(i^k) \] 对 \(2^{64}\) 取模. 题解 一个min_25筛模板题. 令 \(f(n)= ...

  5. 【51NOD1847】奇怪的数学题 min_25筛

    题目描述 记\(sgcd(i,j)\)为\(i,j\)的次大公约数. 给你\(n\),求 \[ \sum_{i=1}^n\sum_{j=1}^n{sgcd(i,j)}^k \] 对\(2^{32}\) ...

  6. 【51NOD1965】奇怪的式子 min_25筛

    题目描述 给你\(n\),求 \[ \prod_{i=1}^n{\sigma_0(i)}^{i+\mu(i)} \] 对\({10}^{12}+39\)取模. \(\sigma_0(i)\)表示约数个 ...

  7. min_25筛

    min_25筛 用来干啥? 考虑一个积性函数\(F(x)\),用来快速计算前缀和\[\sum_{i=1}^nF(i)\] 当然,这个积性函数要满足\(F(x),x\in Prime\)可以用多项式表示 ...

  8. 关于 min_25 筛的入门以及复杂度证明

    min_25 筛是由 min_25 大佬使用后普遍推广的一种新型算法,这个算法能在 \(O({n^{3\over 4}\over log~ n})\) 的复杂度内解决所有的积性函数前缀和求解问题(个人 ...

  9. 51Nod1222 最小公倍数计数 数论 Min_25 筛

    原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1222.html 题意 给定 $a,b$, 求 $$\sum_{n=a}^b \sum_{i=1}^n ...

  10. 洲阁筛 & min_25筛学习笔记

    洲阁筛 给定一个积性函数$F(n)$,求$\sum_{i = 1}^{n}F(n)$.并且$F(n)$满足在素数和素数次幂的时候易于计算. 显然有: $\sum_{i = 1}^{n} F(n) = ...

随机推荐

  1. STL vector用法

    基本操作 1.构造函数 vector():创建一个空vector vector(int nSize):创建一个vector,元素个数为nSize vector(int nSize,const t&am ...

  2. 安装配置JDK和Eclipse的步骤

    导读 作为Java程序员,需要在Linux系统上安装Eclipse,很多人不知要如何安装,在安装Eclipse前,还需安装JDK,Linux下如何安装JDK和Eclipse呢?下面跟朋友们介绍下Lin ...

  3. 第十二届湖南省赛 (B - 有向无环图 )(拓扑排序+思维)好题

    Bobo 有一个 n 个点,m 条边的有向无环图(即对于任意点 v,不存在从点 v 开始.点 v 结束的路径). 为了方便,点用 1,2,…,n 编号. 设 count(x,y) 表示点 x 到点 y ...

  4. 多线程系列之十:Future模式

    一,Future模式 假设有一个方法需要花费很长的时间才能获取运行结果.那么,与其一直等待结果,不如先拿一张 提货单.获取提货单并不耗费时间.这里提货单就称为Future角色获取Future角色的线程 ...

  5. Docker Compose vs. Dockerfile

    Docker Compose vs. Dockerfile - which is better? - Stack Overflowhttps://stackoverflow.com/questions ...

  6. MySQL根据某个字段查询重复的数据

    select count(*) '个数',mobile '手机号',`name` '用户名' from users group by mobile having(count(*) > 1); = ...

  7. 【学亮IT手记】jQuery text()/html()回调函数实例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  8. IO复用,AIO,BIO,NIO,同步,异步,阻塞和非阻塞 区别(百度)

    如果面试问到IO操作,这篇文章提到的问题,基本是必问,百度的面试官问我三个问题 (1)什么是NIO(Non-blocked IO),AIO,BIO (2) java IO 与 NIO(New IO)的 ...

  9. 【转】说说MySQL中的Redo log Undo log都在干啥

    阅读目录(Content) 1 undo 1.1 undo是啥 1.2 undo参数 1.3 undo空间管理 2 redo 2.1 redo是啥 2.2 redo 参数 2.3 redo 空间管理 ...

  10. linux下使用sha256sum生成sha256校验文件,并校验其一致性

    [root@localhost ]# " >test.zip 生成sha256文件校验文件 [root@localhost ]# sha256sum test.zip >test ...