一.莫比乌斯函数:
1.定义
莫比乌斯函数是个分段函数,具体可以表示为
其中关于第三项的解释,我们可以将n进行质因数分解,得到如下的表达式:
,则
.
2.性质:
- p为任意质数,则
- p为任意质数,q为任意正整数, 且满足p不能整除q。则
3.几个定理:
- 数论分块:考虑含有floor(n / i)求和的式子,对于任意i(i <= n),找到一个最大的j,使得floor(n / i) == floor(n / j),则j = floor(n / (n / i)); 代码实现:
int g(int a, int k) { return a / (a / k); }
4.求莫比乌斯函数代码实现:
通过质数筛,筛质数的同时求出每个数的莫比乌斯函数值。
void get_mu(int n)
{
mu[1] = 1;//1需要特殊处理
for(int i = 2; i <= n; i++)
{
if(!st[i]) primes[cnt++] = i, mu[i] = -1;//质数的莫值为-1
for(int j = 0; primes[j] <= n / i; j++)
{
st[primes[j] * i] = true;
if(i % primes[j] == 0) break;//先判断p能否整除i
mu[primes[j] * i] = -mu[i];//性质
}
}
for(int i = 1; i <= n; i++) sum[i] = sum[i - 1] + mu[i];//sum维护莫函数前缀和
}
二.莫比乌斯反演:
1.定义及证明:
2.结论表达:
F,f分别为两个数论函数。