莫比乌斯函数和莫比乌斯反演

6 篇文章 0 订阅
6 篇文章 0 订阅

莫比乌斯函数和莫比乌斯反演

莫比乌斯函数

数论函数:定义域为正整数、陪域为复数的函数,下面讨论的函数均为数论函数。
莫比乌斯函数 μ(d)
- 若 d=1 μ(d)=1
- 若 d=p1p2pk pi 为互异素数, μ(d)=(1)k
- 其他情况 μ(d)=0

莫比乌斯函数性质:
1. 莫比乌斯函数是积性函数: μ(n)μ(m)=μ(mn) 其中 m n互质。
- 在数论中,互质的数满足此性质称为积性函数,任意数满足此性质称为完全积性函数
- 极性函数性质
- f(1)=1
- 积性函数的前缀和也是积性函数
2. d|nμ(d) n=1 时为 1 n>1时值为 0 。(????在求 gcd=1或是用杜教筛求前缀和的时候都用的到。)
3. 对任意正整数 n d|nμ(d)d=φ(n)n

性质1应用:可以线性筛法求莫比乌斯函数,每个数只被筛一次。
大于1的数字有3类:
- 质数: μ(p)=1
- 存在某个质因子的指数大于1: μ(n)=0
- 是两个互质的数的积(是若干质数的积): μ(pn)=μ(n)
注意只有数存在最小质因子的指数大于 1 时,才会被直接筛为 0,其余的情况是由 μ(pn)=μ(n) 得到的。

bool isPrime[maxn];
int primes[maxn], mu[maxn], cnt = 0;//primes数组个数小于maxn;cnt为素数个数
void mobius_sieve() {
    memset(isPrime, true, sizeof isPrime);
    mu[1] = 1;
    cnt= 0;
    for (int i = 2; i < maxn; ++i)
    {
        if (isPrime[i]) primes[cnt++] = i, mu[i] = -1;
        static int d;
        for (int j = 0; j < cnt && (d = i * primes[j]) < maxn; ++j)
        {
            isPrime[d] = false;
            if (i % primes[j]) mu[d] = -mu[i];
            else
            {
                mu[d] = 0;
                break;
            }
        }
    }
}
莫比乌斯反演

两种形式:
- F(n)=d|nf(d)f(n)=d|nμ(d)F(nd)
- F(n)=n|df(d)f(n)=n|dμ(dn)F(d)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值