狄利克雷卷积和莫比乌斯反演学习笔记

我太菜了,口嗨的题也嗨不了,赶紧学一发。

记一波笔记,免得忘力。

什么是狄利克雷卷积?

卷积是函数与函数之间的运算。

两个数论函数的狄利克雷卷积是一个新函数

两个数论函数的狄利克雷卷积一般写成 \(f*g\),读作 \(f\)\(g\)

狄利克雷卷积的定义式如下:(不懂建议手动模拟^^)
\[ f*g(n)=\sum\limits_{d|n}f(d)g(\frac{n}{d}) \]
狄利克雷卷积满足交换律,结合律,分配律,柿子懒得打了,自己理解。

积性函数

\(f\) 是数论函数,若对任意互质的正整数 \(a,b\),都有 \(f(ab)=f(a)f(b)\),则称 \(f\) 是积性函数。

若对任意的正整数 \(a,b\),都有 \(f(ab)=f(a)f(b)\),则称 \(f\) 是完全积性函数。

我寻思着这玩意不是应该高中whk考试里边都有吗。。。

得先介绍几个函数,作为前置芝士。

完全积性函数

单位函数:\(\epsilon(x) = [x = 1]\)

这个有什么用?这是单位元,任何函数卷单位元都等于它本身(不懂手膜^^)。

恒等函数:\(I(x) = 1\)

单位函数:\(\mathrm{id}(x) = x\)

非完全积性函数

重点来力!

\(\mu(x)\) 莫比乌斯函数

定义:
\[ \mu(x) = \begin{cases} 1 & , x = 1 \\ (-1) ^ k & , x = \prod\limits_{i = 1} ^ k p_i \\ 0 & , Otherwise \end{cases} \]
性质:\(\sum\limits_{d|n} \mu(d) = [n = 1]\)

有一个关系:
\[ μ∗1=ϵ \]
它可以用来满足莫比乌斯反演的推理过程,看到后面就知道了。

莫比乌斯反演

现有关系:
\[ F(n)=\sum\limits_{d|n}f(d) \]

\[ F=f*1 \]
则有:
\[ f(n)=F*\mu=\sum\limits_{d|n}\mu(\frac{n}{d})f(d)=\sum\limits_{d|n}\mu(d)f(\frac{n}{d}) \]
是不是用到了上面的那个 \(3\) 式?但如何理解上面这个柿子?我一开始脑残了,其实它就是换了一下约数的枚举顺序,所以在这里 \(d\)\(\frac {n}{d}\)

是等效的。

如何筛 $\mu $?方法和线性筛大同小异。

直接给代码,应该比较好懂。

void mobius() {
    v[1] = 1;
    miu[1] = 1;
    for (int i = 2; i < N; i++) {
        if(!v[i]) {
            v[i] = i;
            p[++cnt] = i;
            miu[i] = -1;
        }
        for (int j = 1; j <= cnt; j++) {
            if(p[j] * i > N) break;
            miu[p[j] * i] = i % p[j] == 0 ? 0 : -miu[i];
            v[i * p[j]] = 1;
            if(i % p[j] == 0) break;
        }
    }
}

技巧:
\[ [gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d) \]
证明:

\(\mu * 1=\epsilon\)

\(\sum_{d|n}\mu(d)=[n=1]\)

\(n\) 替换成 \(\gcd(i,j)\) 即可。

\(d|\gcd(x,y)\) \(\leftrightarrow\) \(d|x\)\(d|y\),可以枚举倍数来求。

常见反演:


\[ f(d)=\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=d]。 \]
则有:
\[ \begin{align} F(x)&=\sum_{x|d}f(d)\\ &=\sum_{x|d}\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=d]\\ &=\sum_{x|d}\sum_{i=1}^{n}\sum_{j=1}^{m}[x|i,x|j]\\ &=\lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{x} \rfloor \end{align} \]
于是 \(F\) 是个可以 \(O(1)\) 计算的玩意了。

再反演一下,利用分块就可以做题力^^。

\(\varphi\)\(\mu\) 的关系:
\[ \begin{align} &Id=\varphi *1\\ &Id*\mu =\varphi\\ &\varphi(n)=\sum_{d|n}\mu(d)\frac{n}{d}\\ &\frac{\varphi(n)}{n}=\sum_{d|n}\frac{\mu(d)}{d} \end{align} \]
如果 \(d(n)\)\(n\) 的约数个数,则有关于 \(d(n)\) 的一个挺好用的结论:
\[ d(nm)=\sum_{i|n}\sum_{j|m}[gcd(i,j)==1] \]
证明:

\(nm=\prod p_i^{x_i}\)\(n=\prod p_i^{y_i}\),则有 \(m=\prod p_i^{x_i-y_i}\)


\[ i = p_1^{a_1}\cdot p_2^{a_2}\cdot p_3^{a_3}\cdots p_k^{a_k},j = p_1^{b_1}\cdot p_2^{b_2}\cdot p_3^{b_3}\cdots p_k^{b_k} \]
先看第一项。要使 \(\gcd(i,j)==1\),则要么 \(a_1\)\(0\),要么 \(b_1\)\(0\)。若 \(a_1=0\),则 \(b_1\)\(x_1-y_1+1\) 种取值,若 \(b_1=0\),则 \(a_1\)\(y_1+1\) 种取值,\(a_1=b_1=0\) 的情况重复了,所以一共有 \(x_1+1\) 种取值。但其实这对于任意的 \(i\) 也是如此。

所以满足条件的 \(i, j\) 对数为 \(\prod(x_i + 1)\)。这与约数定理给出的形式一致,就得证了。

Orz sengxian 写的是真清楚。

话说写东西怎么这么麻烦啊艹,不写了,累死了。

猜你喜欢

转载自www.cnblogs.com/11haonb/p/11746958.html