有(没)什么用?
求解积性函数 F 的前缀和
n∑i=1F(i)
做法
首先假设 F(i)=ik
设 Pi 为从小到大的第 j 个质数
设 g(x,j)
g(x,j)=∑xi=1[i为质数或最小质因子>Pj]F(i)
g(x,0) 不包括 f(1) 的贡献
求解 g
若 P2j>x,则不存在 x 以内的合数的最小质因子大于 Pj
那么 g(x,j)=g(x,j−1)
否则,P2j≤x,考虑从 g(x,j−1) 推过来
显然 g(x,j−1) 中多了最小质因子为 Pj 的那些合数的贡献,设为 R
设这些合数为 tPj,贡献即 tkPkj
要满足这些合数的最小质因子为 Pj,t 要满足最小质因子 ≥Pj
提出 Pkj ,所以 R=(g(xPj,j−1)−小于 Pj 的质数的贡献)Pkj
也就是 R=Pkj(g(xPj,j−1)−g(Pj−1,j−1))
(因为 Pj−1 以内为质数或最小质因子 >Pj−1 的只有质数)
总结一下就是
g(x,j)={g(x,j−1),P2j>xg(x,j−1)−Pkj(g(xPj,j−1)−g(Pj−1,j−1)),P2j≤x
求解前缀和
设 h(x)=∑xi=2[i 为质数 ]F(i)
假设 ax 为 Pax≤x 的最大的数
那么 h(x)=g(x,a√x)
再设 S(n,j)=∑ni=1[i的最小质因子≥Pj]F(i)
S(n,0) 不包括 f(1) 的贡献
分成两个部分计算
-
i 为质数,贡献即为 h(n)−h(Pj−1)
-
i 为合数:
枚举最小质因子 Pk 及其的指数 e (这里的 k 和 F(i)=ik 不是一个)
贡献为
∑k≥jPe+1k≤n∑e(F(Pek)S(npek,k+1)+F(Pe+1k))
首先积性函数的性质有前面的一部分
∑k≥jPe+1k≤n∑e=1F(Pek)S(npek,k+1)
而这样就没有算到 F(Pek) 的贡献,加回来即可
答案就是 S(n,1)+F(1)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具