数论 工具 线性筛
由于做莫反题需要大量的基础函数知识,于是有了这篇文章将我做到的函数都记录下来。
持续施工中。
约数和函数
定义:
证其为积性函数:
设
我们发现当
推广可得:
证毕。
接下来考虑如何线性筛。考虑我们当前的数
实现中,当出现
因为 在代码中
int pri[N],tot,o[N],low[N];
bool vis[N];
void Wprepare()
{
o[1]=1;
for(int i=2;i<=N;i++)
{
if(!vis[i]) pri[++tot]=i,o[i]=low[i]=i+1;
for(int j=1;j<=tot;j++)
{
if(i*pri[j]>N) break;
vis[i*pri[j]]=1;
if(i%pri[j]==0)
{
low[i*pri[j]]=low[i]*pri[j]+1;
o[i*pri[j]]=o[i]/low[i]*low[i*pri[j]];
break;
}
low[i*pri[j]]=pri[j]+1;
o[i*pri[j]]=o[i]*o[pri[j]];
}
}
}
例题是 [SDOI2014]数表,莫反部分不难,难点在理解如何筛约数和以及动态维护某个函数前缀和,练习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】