杜教筛是拿来求积性函数前缀和的东西
h=f∗g
s(n)=n∑i=1g(i)
而杜教筛可以在 O(n23) 的复杂度内求出 s(n),前提是存在两个很好求前缀和的函数 f 和 h 满足 h=f∗g
n∑i=1h(i)n∑i=1∑j|if(j)g(ij)
=n∑i=1f(i)⌊nd⌋∑j=1g(j)
=n∑i=1f(i)s(⌊ni⌋)
n∑i=1h(i)=n∑i=1f(i)s(⌊ni⌋)
n∑i=1h(i)=n∑i=2f(i)s(⌊ni⌋)+s(n)f(1)
n∑i=1h(i)−n∑i=2f(i)s(⌊ni⌋)=s(n)f(1)
到这里就可以用整除分块求了,这样解出复杂度 O(n34)
但是可以用欧拉筛预处理在 O(n23) 以内的前缀和,复杂度降到 O(n23)
常用函数
ϕ∗I=id
μ∗I=e
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具