[笔记]min25 筛

解决积性函数 f 的前缀和问题。

下文中的一些记号:

  • F(n)=i=1nf(i)f(i) 的前缀和。

  • lp(n)n 的最小质因子。

  • pk:全体质数中第 k 小的质数。

  • xy:默认下取整。


首先尝试解决这个问题:求出

G(m)=iP,imf(i)

其中 m{n1,n2,n3,nn},一共有 n 中取值。

考虑 dp。设 g(j,m) 表示:

g(j,m)=1im[iPlp(i)>pj]f(i)

也就是对于所有的质数或者最小质因数大于 pjf 求和。

这里的 f 需要满足下面的三个性质:

  • pP,f(p)=f(p)

  • f 是完全积性函数。

  • f 可以快速求值。

初始时,g(0,m)=2imf(i)

转移时分两种情况:

  • pj2>mg(j,m)=g(j1,m)。因为不存在 i[1,m],使得 lp(i)>pj

  • pj2m

g(j,m)=g(j1,m)f(pj)×(g(j1,mpj)1i<jf(pi))=g(j1,m)f(pj)×(g(j1,mpj)g(j1,pj1))

这个式子怎么理解呢?首先,这里可以理解成从 g(j1,m) 里面筛掉所有 lp=pjf 值。而筛掉的值一定可以表示成 pj×q,其中 q 是一个 mpj 而且最小质因子 pj 的数。最后减掉的那块,是 g(j1,mpj) 里面的那部分质数。由于 f 是完全积性函数,这两部分可以直接相乘。

以上部分时间复杂度被证明是 O(n0.75logn)


上面求出了 G(m)=iP,imf(i)=g(π(m),m)

posted @   Link-Cut-Y  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示