数论学习笔记
Warning:请不要使用此博客作为学习用途,这个博客是写出来我自己看的,所以很有可能前言不搭后语或者出言不逊。
# 备忘录
## 一些记号
I(x)=1
id(x)=x
e(x)=[x=1]
d(x)=∑d|x1
σ(x)=∑d|xd
φ(x) 欧拉函数
μ(x) 莫比乌斯函数
## 一些数论定理
e∗F=F,F 为任何数论函数。
e=μ∗1,[n=1]=∑d|nμ(d)
id=φ∗1,n=∑d|nϕ(d)
μ∗id=φ
μ∗d=1
id=φ∗1
## 莫比乌斯反演
g(n)=∑d|nf(n),则 f(n)=∑d|nμ(nd)g(d)
## 狄利克雷卷积
f(n)∗g(n)=∑d|nf(d)g(nd)
# Euler 函数的前缀和
令 ϕ(n)=n∑i=1φ(i),求 ϕ(n)。
$$
\begin{aligned}{}
&\quad \frac{1}{2}n(n+1)\\
&=\sum\limits_{i=1}^{n}i=\sum\limits_{i=1}^n\sum\limits_{d|i}\varphi(\frac{i}{d})\\
&=\sum\limits_{d=1}^n\sum\limits_{1\leq i \leq n, d|k}\varphi(\frac{i}{d})\\
&=\sum\limits_{d=1}^{n}\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\varphi(i)\\
&=\sum\limits_{d=1}^n\phi(\lfloor \frac{n}{d}\rfloor)\\
\end{aligned}\\
\therefore \phi(n)=\frac{1}{2}n(n+1)-\sum\limits_{d=2}^{n}\phi(\lfloor\frac{n}{d}\rfloor)\\
$$
当知道了 ϕ(⌊nd⌋) 运用整除分块即可在 O(√n) 内算出 ϕ(n)。
利用记忆化搜索,可以防止一个值被计算多次。
总时间复杂度 O(n34)。
因此可以使用欧拉筛筛出前 n23 的值,然后运用杜教筛,那么总时间复杂度为 O(n23)。显然非常玄学,我也不知道怎么计算出来的qwq
# Möbius 函数的前缀和
令 M(n)=n∑i=1μ(i)。计算 M(n)。
1=n∑i=1e(i)=n∑i=1∑d|iμ(d)=n∑d=1∑1≤i≤n,d|iμ(id)=n∑d=1⌊nd⌋∑i=1μ(i)=n∑d=1M(⌊nd⌋)∴
同理可以运用线性筛计算。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步