Loading [MathJax]/jax/element/mml/optable/MathOperators.js

数论学习笔记

Warning:请不要使用此博客作为学习用途,这个博客是写出来我自己看的,所以很有可能前言不搭后语或者出言不逊。

# 备忘录

## 一些记号

I(x)=1

id(x)=x

e(x)=[x=1]

d(x)=d|x1

σ(x)=d|xd

φ(x) 欧拉函数

μ(x) 莫比乌斯函数

## 一些数论定理

eF=FF 为任何数论函数。

e=μ1[n=1]=d|nμ(d)

id=φ1n=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)=ni=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)=ni=1μ(i)。计算 M(n)

1=ni=1e(i)=ni=1d|iμ(d)=nd=11in,d|iμ(id)=nd=1ndi=1μ(i)=nd=1M(nd)

同理可以运用线性筛计算。

posted @   SmallPillow  阅读(127)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示