数论: 莫比乌斯反演 (一) 莫比乌斯函数
莫比乌斯反演 ( 一 ): 莫比乌斯函数
这是一个积性函数, 目前没有具体意义, 是一个工具函数, 用μ(x)表示.
定义域:正整数(N)
定义:
性质:
μ(xy)=μ(x)μ(y) 积性函数特性
μ(1)=1 可以由上一个性质推出
求莫比乌斯函数:
欧拉筛: 积性函数通法
只要将边界修改一下, 就能线性求出任何定义域为N的积性函数.
bool prm[n];//存一个数是否是质数
int pri[n];//存质数
int Mu[n];//μ函数
inline void Prime(LL n){
Mu[1]=1;//μ(1)为1
for(register int i=2;i<=n;i++){//从2开始筛
if(!prm[i]) {//筛完后落下的就是质数
pri[ ++pri[ 0 ] ]=i;//将质数记录在pri里, pri[0]存当前质数数量属于计数器
Mu[i]=-1;//质数只有一个质因数, (-1)^1=-1
}
for(register int j = 1; ( j <= pri [ 0 ] ) && ( i * pri [ j ] <= n ); j++) {//当前数和已知所有质数都相乘, 则积是合数.
prm[ i * pri[ j ] ] = 1;//筛掉i * pri[j]
if( i % pri[ j ] == 0 ) {
break;//只要整除, 那么(i*pri[j])一定有完全平方因数(pri[j]^2)(i里一个,pri[j]本身一个),这是μ(i*pri[j])=0
}
Mu[ i * pri[ j ] ] = -(Mu[ i ]);//不整除, (i*pri[j])在i的基础上多了一个质因数(pri[j])
}
}
}
关于register前缀:
常在循环语句中使用, 优化多次重复调用同一个变量. 将之前多次在内存中调用转化为直接在cache里面调用, 节省时间.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具