莫比乌斯反演 & 杜教筛 模板

前记:

突然想学杜教筛,顺便复习莫比乌斯反演。

\(\mathbb{P}\) 表示质数集。

0.前置

.1 积性函数

对于任意互质的整数 \(a\)\(b\) 有性质 \(f(ab)=f(a)f(b)\) 的数论函数叫做积性函数。

.2 狄利克雷卷积

定义:

对于两个数论函数 \(f(x),g(x)\),它们的狄利克雷卷积结果 \(h(x)\) 为:

\(h(x)=\sum\limits_{d\mid x} f(d)g(\dfrac{x}{d})\)。记为 \(h=f\ast g\)

定义函数 \(1(x)=1,\operatorname{id}(x)=x,\varepsilon (x)=[n=1]\)

则:

\(f\ast 1=\sum\limits_{d\mid x} f(d)\cdot 1=\sum\limits_{d\mid x} f(d)\)

\(f\ast \operatorname{id}=\sum\limits_{d\mid x} f(d)\cdot \dfrac{x}{d}\)

\(f\ast \varepsilon=\sum\limits_{d\mid x} f(d)\cdot [d=x]=f\),所以 \(\varepsilon\) 被称作单位元,即对于任何数论函数 \(f\)\(f\ast \varepsilon=f\)

性质:

  1. 狄利克雷卷积满足交换律,结合律与分配律。

  2. 两个积性函数的狄利克雷卷积也是积性函数。

  3. 积性函数的逆元也是积性函数。

证明皆略。

.3 欧拉函数

定义:

对正整数 \(x\),欧拉函数 \(\varphi(x)\) 表示小于(或小于等于)\(x\) 的正整数中与 \(x\) 互质的数的数目。特别规定 \(\varphi(1)=1\)。即:

\[\varphi(x)=\begin{cases}1 &x=1\\\sum\limits_{i=1}^x (i\bot x) &x>1\end{cases} \]

显然: \(\varphi(x)=x-1\Leftrightarrow x\in \mathbb{P}\)

性质:

  • 性质 1. 若 \(p\in \mathbb{P}\)\(\varphi(p^n)=p^{n-1}(p-1)\)

不大于 \(p^n\) 的正整数中,不与之互质的只有 \(p,2p\cdots p^{n-1}\cdot p\),共 \(p^{n-1}\) 个数,所以 \(\varphi(p^n)=p^n-p^{n-1}=p^{n-1}(p-1)\)

  • 性质 2. 若 \(a\mid x\)\(\varphi(ax)=a\varphi(x)\)

易得。

  • 性质 3. \(\varphi\) 为积性函数。

证明显然。由于是积性函数,所以根据以上性质与欧拉筛结合,则:

\[\varphi(x)=\begin{cases}x-1&x\in\mathbb{P}\\ a\cdot\varphi(\dfrac{x}{a})&x\notin\mathbb{P},a\mid\dfrac{x}{a}\\ (a-1)\cdot\varphi(\dfrac{x}{a})&x\notin\mathbb{P},a\nmid\dfrac{x}{a}\end{cases} \]

inline void init(int n)
{
	phi[1]=1;
	for(register int i=2;i<=n;++i)
	{
		if(!phi[i]) phi[i]=i-1,p[++tot]=i;
		for(register int j=1;j<=tot;++j)
		{
			if(i*p[j]>n) break;
			if(!(i%p[j])){phi[i*p[j]]=p[j]*phi[i];break;}
			phi[i*p[j]]=(p[j]-1)*phi[i]; 
		}
	}
	return ; 
}
  • 性质 4. \(\varphi\ast 1=\operatorname{id}\)

将正整数 \(x\) 质因数分解为 \(\prod\limits_{i=1}^{k} {p_i}^{c_i}\)

因为 \(\varphi\) 是积性函数,所以只要证明 \(x'=p^c\)\(\varphi\ast 1=\operatorname{id}\) 即可,所以:

\((\varphi\ast 1)(n')=\sum\limits_{d\mid n'}\varphi (\dfrac{n'}{d})=\sum\limits_{i=0}^c\varphi(p^i)=1+(p-1)\sum\limits_{i=0}^{c-1} p^i=p^c=n'=\operatorname{id}(n')\)

1.莫比乌斯反演

.1 莫比乌斯函数

定义:

将正整数 \(x\) 质因数分解为 \(\prod\limits_{i=1}^{k} {p_i}^{c_i}\)。定义 \(\mu\)

\[\mu (x)=\begin{cases} 1&n=1\\ 0&\exists i\in [1,k],c_i>1\\ (-1)^k&\forall i\in [1,k],c_i\leq 1 \end{cases} \]

实际含义为若 \(x\) 含有平方因子则 \(\mu (x)=0\),否则若包含奇数个不同质因数则 \(\mu (x)=-1\),偶数个则 \(\mu (x)=1\)。特别规定 \(\mu (1)=1\)

性质:

  • 性质 1:\(\mu\) 是积性函数。

证明显然。

由于 \(\mu\) 是积性函数,可以使用欧拉筛筛出。对于大于 \(1\) 的正整数 \(x\),设 \(a\)\(x\) 的一个质因数。则:

\[\mu (x)=\begin{cases} -1&x\in\mathbb{P}\\ 0&x\notin\mathbb{P}, a\mid \dfrac{x}{a}\\ -1\cdot\mu(\dfrac{x}{a})&x\notin\mathbb{P},a\nmid \dfrac{x}{a} \end{cases} \]

inline void init(int n)
{
	mu[1]=1;
	for(register int i=2;i<=n;++i)
	{
		if(!flag[i]) p[++tot]=i,mu[i]=-1;
		for(register int j=1;j<=tot&&i*p[j]<=n;++j)
		{
			flag[i*p[j]]=true;
			if(!(i%p[j])){mu[i*p[j]]=0;break;}
			mu[i*p[j]]=-mu[i];
		}
	}
	return ;
}
  • 性质 2:\(\mu\ast 1=\varepsilon\)

\(n=\prod\limits_{i=1}^{k} {p_i}^{c_i},n'=\prod\limits_{i=1}^{k} {p_i}\),则 \(\sum\limits_{d\mid n}\mu (d)=\sum\limits_{d\mid n'}\mu (d)=\sum\limits_{i=0}^{k} \dbinom{k}{i}\cdot (-1)^i\)

根据二项式定理有:

\(\sum\limits_{d\mid n}\mu (d)=\sum\limits_{i=0}^{k} \dbinom{k}{i}\cdot (-1)^i=(1+(-1))^k=[n=1]=\varepsilon (n)\)

  • \(\mu\ast 1=\varepsilon\)

延伸一下,有:

\([\gcd(i,j)=1]=\varepsilon(gcd(i,j))=\sum\limits_{d\mid \gcd(i,j)}\mu (d)\)

  • \([i\bot j]=\sum\limits_{d\mid \gcd(i,j)}\mu (d)\)

结合 \(\varphi\ast 1=\operatorname{id}\) 可得:

\(\operatorname{id}\ast \mu=\varphi\ast 1\ast \mu=\varphi\ast \varepsilon=\varphi\)

  • \(\mu\ast \operatorname{id}=\varphi\)

\[\begin{cases}\mu\ast 1=\varepsilon\\ \varphi\ast 1=\operatorname{id}\\ \mu\ast \operatorname{id}=\varphi\end{cases} \]

.2 莫比乌斯变换

对于 \(f(n),g(n)\) 两个数论函数,如果有 \(f=g\ast 1\),则有 \(g=f\ast \mu\)。这样,\(f(n)\) 称为\(g(n)\) 的莫比乌斯变换,\(g(n)\) 称为 \(f(n)\) 的莫比乌斯反演。

证明较为简单:\(f=g\ast 1\)\(f\ast \mu=g\ast 1\ast mu=g\ast \varepsilon=g\)

所以事实上 \(\varphi\)\(\mu\) 的关系只是 \(f=\operatorname{id},g=\varphi\) 的一组特例。

扩展:\(f(n)=\sum\limits_{i=1}^n t(i)g(\lfloor\dfrac{n}{i}\rfloor)\Leftrightarrow g(n)=\sum\limits_{i=1}^{n}\mu(i)t(i)f(\lfloor\dfrac{n}{i}\rfloor)\)感觉证明好复杂,但是形式貌似很好背,不学证明了。

2.杜教筛

.1 杜教筛

杜教筛是一种用来求解数论函数的前缀和的算法,可以在低于线性时间内计算 \(s(n)=\sum\limits_{i=1}^n f(i)\)

对于一个数论函数 \(g\),恒有:

\[\begin{aligned}\sum\limits_{i=1}^{n} (f\ast g)(i) &=\sum\limits_{i=1}^{n} \sum\limits_{d\mid i} g(d)f(\dfrac{i}{d})\\ &=\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{\lfloor\frac{n}{i}\rfloor} g(i)f(j)\\ &=\sum\limits_{i=1}^{n} g(i)S(\lfloor\dfrac{n}{i}\rfloor)\\ &=g(1)S(n)+\sum\limits_{i=2}^{n} g(i)S(\lfloor\dfrac{n}{i}\rfloor)\end{aligned} \]

这样我们就得到了含有 \(S(n)\) 的项,移项得:

\[g(1)S(n)=\sum\limits_{i=1}^{n}(f\ast g)(i)-\sum\limits_{i=2}^{n} g(i)S(\lfloor\dfrac{n}{i}\rfloor) \]

也就是现在问题要求找到一个 \(g\) ,使得 \((f\ast g)\) 的前缀和与 \(g\) 可以被快速的计算出。

.2 杜教筛实例

欧拉函数前缀和:

\(\varphi\ast 1=\operatorname{id}\) 想到使 \(g=1\),原式化为:

\[S(n)=\sum\limits_{i=1}^{n}i-\sum\limits_{i=2}^{n} S(\lfloor\dfrac{n}{i}\rfloor)=\dfrac{n(n+1)}{2}-\sum\limits_{i=2}^{n} S(\lfloor\dfrac{n}{i}\rfloor) \]

莫比乌斯函数前缀和:

\(\mu\ast 1=\varepsilon\) 想到使 \(g=1\),原式化为:

\[S(n)=\sum\limits_{i=1}^{n} [i=n]-\sum\limits_{i=2}^{n} S(\lfloor\dfrac{n}{i}\rfloor)=1-\sum\limits_{i=2}^{n} S(\lfloor\dfrac{n}{i}\rfloor) \]

\(\varphi\ast\operatorname{id}\) 前缀和:

\(g=\operatorname{id}\),则:

\[\begin{aligned}S(n)&=\sum\limits_{i=1}^{n} \sum\limits_{d\mid i}(d\cdot \varphi(d))\cdot\dfrac{i}{d}-\sum\limits_{i=2}^{n} i\cdot S(\lfloor\dfrac{n}{i}\rfloor)\\ &=\sum\limits_{i=1}^n i\sum\limits_{d\mid i}\varphi(d)-\sum\limits_{i=2}^{n} i\cdot S(\lfloor\dfrac{n}{i}\rfloor)\\ &=\sum\limits_{i=1}^n i\cdot (\varphi\ast 1)(i)-\sum\limits_{i=2}^{n} i\cdot S(\lfloor\dfrac{n}{i}\rfloor)\\ &=\sum\limits_{i=1}^n i\cdot \operatorname{id}(i)-\sum\limits_{i=2}^{n} i\cdot S(\lfloor\dfrac{n}{i}\rfloor)\\ &=\dfrac{n(n+1)(2n+1)}{6}-\sum\limits_{i=2}^{n} i\cdot S(\lfloor\dfrac{n}{i}\rfloor) \end{aligned} \]

上面三个要用到数论分块,所以经过一堆复杂的我不想推导的时间复杂度的推导,将 \(\leq n^{\frac{2}{3}}\) 的数常规线筛出来预处理时间复杂度最优,为 \(O(n^{\frac{2}{3}})\)


后记:

srds,是不是还应该去学 SoyTony 筛。

srds,还是除了板题啥也不会。

posted @ 2023-09-24 11:45  int_R  阅读(109)  评论(11编辑  收藏  举报