由于楼主是个小蒟蒻,所以理解的很慢,所以就很详细
然后学习的时候看了很多大佬的博客,yyb,wfy…还有一堆不认识的emmm,wzw巨佬的讲解,然后终于理解了那么一点,就来记录一下
(表示打这么多公式是真的累…)
公式打的比较多,如果有那些地方写错了希望各位大佬能指出,我一定及时的改正
至于代码…码风应该还不错吧(至少我觉得还是很好看的)
因为我正在慢慢学,所以也就在慢慢更新(速度应该还凑合,但毕竟天天考试时间也不算太多)
在前面的题目中证明需要用到的一些玄学小学奥数的东西的证明写在了最后(因为放在前面好难排版捂脸)
莫比乌斯函数简介
首先先介绍一下什么是莫比乌斯函数
(转自百度百科)
莫比乌斯函数是一个数论函数,它同时也是一个积性函数(μ(ab) =μ(a)μ(b), a,b互质)
当n不等于1时,n所有因子的莫比乌斯函数值的和为0
也就是说
∑ d ∣ n μ ( d ) = { 1 n=1 0 n>1 \sum_{d|n}\mu(d)= \begin{cases} 1& \text{n=1}\\ 0& \text{n>1} \end{cases} d∣n∑μ(d)={
10n=1n>1
莫比乌斯函数完整定义的通俗表达:
1)莫比乌斯函数μ(n)的定义域是N
2)μ(1)=1
3)当n存在平方因子时,μ(n)=0
4)当n是素数或奇数个不同素数之积时,μ(n)=-1
5)当n是偶数个不同素数之积时,μ(n)=1
μ ( n ) = { 1 n=0 ( − 1 ) k n= p1*p2*p3...pk 0 其他 \mu(n)= \begin{cases} 1& \text{n=0}\\ (-1)^k& \text{n= p1*p2*p3...pk}\\ 0& \text{其他} \end{cases} μ(n)=⎩⎪⎨⎪⎧1(−1)k0n=0n= p1*p2*p3...pk其他
其实上面的都没有什么特别大的用处
莫比乌斯反演的公式
接着我们看莫比乌斯反演
设 g ( n ) = ∑ d ∣ n f ( d ) 设 g(n)=\sum_{d|n}f(d) 设g(n)=d∣n∑f(d)
⇕ \Updownarrow ⇕
f ( n ) = ∑ d ∣ n μ ( d ) g ( n d ) f(n)=\sum_{d|n}\mu(d)g\left(\frac{n}{d}\right) f(n)=d∣n∑μ(d)g(dn)
g ( n ) = ∑ n ∣ d f ( d ) g(n)=\sum_{n|d}f(d) g(n)=n∣d∑f(d)
⇕ \Updownarrow ⇕
f ( n ) = ∑ n ∣ d g ( d ) μ ( d n ) f(n)=\sum_{n|d}g(d)\mu\left(\frac{d}{n}\right) f(n)=n∣d∑g(d)μ(nd)
( 注 意 这 个 d 一 般 就 是 f 的 定 义 域 或 者 说 是 “ 函 数 值 有 效 ” 的 定 义 域 ) (注意这个 d 一般就是 f 的定义域或者说是“函数值有效”的定义域) (注意这个d一般就是f的定义域或者说是“函数值有效”的定义域)
表示这两个式子的整除来整除去让我这个没学过小学奥数的小蒟蒻看的头都是大的,天天搞不清楚谁整除谁…
有了上面的式子的恒等互换似乎依旧没有什么用
板子题及证明
于是我们来看一下最基本的题目的证明
板子
求 ∑ i = 1 n ∑ j − 1 m [ g c d ( i , j ) = = 1 ] 求\sum_{i=1}^n\sum_{j-1}^m[gcd(i,j)==1] 求i=1∑nj−1∑m[gcd(i,j)==1]
这 里 的 [ g c d ( i , j ) = = 1 ] 是 是 否 满 足 g c d 为 1 , 如 果 是 就 a n s + + 这里的[gcd(i,j)==1]是是否满足gcd为1,如果是就ans++ 这里的[gcd(i,j)==1]是是否满足gcd为1,如果是就ans++
首 先 我 们 把 它 化 作 一 般 形 首先我们把它化作一般形 首先我们把它化作一般形
设 f ( x ) = ∑ i = 1 n ∑ j − 1 m [ g c d ( i , j ) = = x ] 设f(x)=\sum_{i=1}^n\sum_{j-1}^m[gcd(i,j)==x] 设f(x)=i=1∑nj−1∑m[gcd(i,j)==x]
g ( n ) = ∑ n ∣ d f ( d ) g(n)=\sum_{n|d}f(d) g(n)=n∣d∑f(d)
⇕ \Updownarrow ⇕
f ( n ) = ∑ n ∣ d g ( d ) μ ( d n ) f(n)=\sum_{n|d}g(d)\mu\left(\frac{d}{n}\right) f(n)=n∣d∑g(d)μ(nd)
那 么 , 我 们 的 g ( n ) 是 什 么 呢 那么,我们的g(n)是什么呢 那么,我们的g(n)是什么呢
直 接 按 照 定 义 把 它 带 进 去 , 可 以 化 出 这 么 一 个 式 子 直接按照定义把它带进去,可以化出这么一个式子 直接按照定义把它带进去,可以化出这么一个式子
g ( x ) = ∑ i = 1 n ∑ j = 1 m [ x ∣ g c d ( i , j ) ] g(x)=\sum_{i=1}^n\sum_{j=1}^m[x|gcd(i,j)] g(x)=i=1∑nj=1∑m[x∣gcd(i,j)]
⇓ 把 x 提 出 来 \Downarrow 把x提出来 ⇓把x提出来
g ( x ) = ∑ i = 1 ⌊ n x ⌋ ∑ j = 1 ⌊ m x ⌋ [ 1 ∣ g c d ( i , j ) ] g(x)=\sum_{i=1}^{
{\lfloor\frac{n}{x}\rfloor}}\sum_{j=1}^{\lfloor\frac{m}{x}\rfloor}[1|gcd(i,j)] g(x)=i=1∑⌊xn⌋j=1∑⌊xm⌋[1∣gcd(i,j)]
这 个 时 候 , 由 于 所 有 的 g c d 肯 定 可 以 整 除 1 , 所 以 , 这 个 式 子 的 值 就 变 成 了 i , j 的 个 数 这个时候,由于所有的gcd肯定可以整除1,所以,这个式子的值就变成了i,j的个数 这个时候,由于所有的gcd肯定可以整除1,所以,这个式子的值就变成了i,j的个数
g ( x ) = ⌊ n x ⌋ ⌊ m x ⌋ g(x)=\lfloor\frac{n}{x}\rfloor\lfloor\frac{m}{x}\rfloor g(x)=⌊xn⌋⌊xm⌋
然 后 , 我 们 再 把 g ( x ) 带 回 原 来 的 式 子 里 面 , 可 以 得 到 然后,我们再把g(x)带回原来的式子里面,可以得到 然后,我们再把g(x)带回原来的式子里面,可以得到
f ( x ) = ∑ x ∣ d g ( d ) μ ( d x ) = ∑ x ∣ d μ ( d x ) ⌊ n d ⌋ ⌊ m d ⌋ f(x)=\sum_{x|d}g(d)\mu\left(\frac{d}{x}\right)=\sum_{x|d}\mu\left(\frac{d}{x}\right)\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor f(x)=x∣d∑g(d)μ(xd)=x∣d∑μ(xd)⌊dn⌋⌊dm⌋
f ( 1 ) = ∑ 1 ∣ d μ ( d 1 ) ⌊ n d ⌋ ⌊ m d ⌋ = ∑ d = 1 m i n ( n , m ) μ ( d ) ⌊ n d ⌋ ⌊ m d ⌋ f(1)=\sum_{1|d}\mu\left(\frac{d}{1}\right)\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor=\sum_{d=1}^{min(n,m)}\mu({d})\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor f(1)=1∣d∑μ(1d)⌊dn⌋⌊dm⌋=d=1∑min(n,m)μ(d)⌊dn⌋⌊dm⌋
A n s = ∑ d = 1 m i n ( n , m ) μ ( d ) ⌊ n d ⌋ ⌊ m d ⌋ Ans=\sum_{d=1}^{min(n,m)}\mu({d})\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor Ans=d=1∑min(n,m)μ(d)⌊dn⌋⌊dm⌋
算 到 了 这 里 , 我 们 就 可 以 用 O ( n ) 来 快 速 的 求 了 算到了这里,我们就可以用O(n)来快速的求了 算到了这里,我们就可以用O(n)来快速的求了
接下来我们来看一下稍微的一点变式
求 ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = d ] 求 \sum_{i=1}^n\sum_{j=1}^m [ gcd(i,j)==d ] 求i=1∑nj=1∑m[gcd(i,j)==d]
令 f ( x ) = ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = x ] 令 f(x)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=x] 令f(x)=i=1∑nj=1∑m[gcd(i,j)=x]
⇓ \Downarrow ⇓
g ( x ) = ∑ x ∣ d f ( d ) = ∑ i = 1 n ∑ j = 1 m [ x ∣ g c d ( i , j ) ] g(x)=\sum_{x|d}f(d)=\sum_{i=1}^n\sum_{j=1}^m[x|gcd(i,j)] g(x)=x∣d∑f(d)=i=1∑nj=1∑m[x∣gcd(i,j)]
∵ [ x ∣ g c d ( i , j ) ] \because[x|gcd(i,j)] ∵[x∣gcd(i,j)]
∴ x ∣ i 且 x ∣ j \therefore x|i\text{且}x|j ∴x∣i且x∣j
g ( x ) = ∑ i = 1 n ∑ j = 1 m [ x ∣ g c d ( i , j ) ] = ∑ i = 1 ⌊ n x ⌋ ∑ j = 1 ⌊ m x ⌋ = ⌊ n x ⌋ ⌊ m x ⌋ g(x)=\sum_{i=1}^n\sum_{j=1}^m[x|gcd(i,j)]=\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}\sum_{j=1}^{\lfloor\frac{m} {x}\rfloor}=\lfloor\frac{n}{x}\rfloor\lfloor\frac{m}{x}\rfloor g(x)=i=1∑