莫比乌斯反演推式子
前置
根据莫比乌斯反演,我们有:
\[[gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d)
\]
一
给定 \(n,m(n\leq m)\),求:
\[\sum_{i=1}^n \sum_{j=1}^m [\gcd(i,j)=1]
\]
直接代换,有:
\[\sum_{i=1}^n \sum_{j=1}^n \sum_{d|\gcd(i,j)}\mu(d)
\]
因为 \(d|\gcd(i,j)\),所以 \(d|i,d|j\)。我们改为枚举 \(d\):
\[\sum_{d=1}^n \lfloor \frac{n}{d} \rfloor \lfloor \frac{m}{d} \rfloor\mu(d)
\]
至于这一步为何是正确的,我们可以考虑对于每个 \(d\) 计算其 \(\mu(d)\) 产生的贡献。
此时我们直接使用整除分块可获得 \(O(\sqrt n)\) 的好成绩。
为了简便起见,我们将这种枚举 \(d|\gcd(i,j)\) 的套路称为套路一。
二
给定 \(n,m,k\),求:
\[\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=k]
\]
我们不妨设 \(n\leq m\),避免分讨而不失一般性。
注意到如果 \(\gcd(i,j)=k\),那么 \(k|i,k|j\)。所以缩小枚举范围:
\[\sum_{i=1}^{\lfloor \frac{n}{k} \rfloor}\sum_{j=1}^{\lfloor \frac{m}{k} \rfloor}[\gcd(i,j)=1]
\]
使用套路一,有:
\[\sum_{d=1}^{\lfloor \frac{n}{k} \rfloor}\mu(d)\lfloor \frac{n}{kd} \rfloor\lfloor \frac{m}{kd} \rfloor
\]
直接使用整除分块,可获得 \(O(\sqrt n)\) 的好成绩。
我们把这种通过 \(\gcd(i,j)=k\) 推出 \(k|i,k|j\) 进而缩小枚举范围且转变为 \(\gcd(i,j)=1\) 的套路称为套路二。
三
给定 \(n,m\),求:
\[\sum_{i=1}^n \sum_{j=1}^m \gcd(i,j)
\]
不妨设 \(n\leq m\)。
设 \(d=\gcd(i,j)\),使用套路二,有:
\[\sum_{d=1}^n\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}\sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} [\gcd(i,j)=1]d
\]
使用套路一,有:
\[\sum_{d=1}^n \sum_{k=1}^{\lfloor \frac{n}{d} \rfloor}d\mu(k)\lfloor \frac{n}{kd} \rfloor\lfloor \frac{m}{kd} \rfloor
\]
使用两次整除分块,即可获得 \(O(n)\) 的好成绩。

浙公网安备 33010602011771号