[学习笔记] 线性筛 积性函数

· · 个人记录

线性筛

每个合数被它的最小质因子 P 筛恰好一次,或者说 x 只被 \frac{x}{P(x)} 筛去,所以 O(n)

积性函数

定义

$$ \begin{cases} f(1)=1\\ f(xy)=f(x)f(y)\ ,\gcd(x,y)=1 \end{cases} $$ ## 基本工具 $P(x)$ 表示 $x$ 的最小质因子。 $\alpha(x)$ 表示 $x$ 的唯一分解中 $P(x)$ 的次幂。 $P\alpha(x)$ 表示 $P(x)^{\alpha(x)}$。 则有 $f(x)=f(P\alpha(x))f(\frac{x}{P\alpha(x)})$。 $P(x)$ 可以在线性筛过程中直接求。 $$ \alpha(x)= \begin{cases} \alpha(\frac{x}{P(x)})+1\\ 1&,P(x)\not =P(\frac{x}{P(x)}) \end{cases} $$ $$ P\alpha(x)= \begin{cases} P\alpha(\frac{x}{P(x)})\times P(x)\\ P(x) &,P(x)\not =P(\frac{x}{P(x)}) \end{cases} $$ ## 常见积性函数 (以下 $f(1)=1$ 不再强调) ### 欧拉函数 $\varphi(x) $$ \varphi(x)= \begin{cases} \varphi(\frac{x}{P(x)})\times P(x)\\ \varphi(\frac{x}{P(x)})\times (P(x)-1) &,P(x)\not =P(\frac{x}{P(x)}) \end{cases} $$ 或 $$ \varphi(x)=\varphi(\frac{x}{P\alpha(x)}) \times P\alpha(x) \times \frac{(P(x)-1)}{P(x)} $$ ### 莫比乌斯函数 $\mu(x)

正整数 n=\prod_{i=1}^k p_i^{a_i},那么 \mu(n)=\begin{cases}(-1)^k\\0&,\max a>1\end{cases}

\mu (x) = \begin{cases} -[\alpha(x)=1]&,x=P\alpha(x)\\ \mu(P\alpha(x))\mu(\frac{x}{P\alpha(x)}) \end{cases}

约数个数函数 d(x)

$$ d(x)=d(\frac{x}{P\alpha(x)})\times(\alpha(x)+1) $$ ### 幂函数 $\mathrm{id}_ k(x) \mathrm{id}_ k(n)=n^k \mathrm{id}_ k(x)= \begin{cases} \mathrm{id}_ k(\frac{x}{P(x)})\times P(x)\\ x^k &,x=P(x) \end{cases}

复杂度 O(\frac{n}{\ln n}\times \log k)=O(n)

约数的幂和 \sigma_k(x)

\sigma_k(n)=\sum_{i|n}{i^k} \sigma_k(x)=\sigma_k(\frac{x}{P\alpha(x)})\times \frac{P(x)^{k(\alpha(x)+1)}-1}{P(x)^k-1}

P(x) 的每种值预处理 P(x)^k,复杂度 O(\frac{n}{\ln n}\times \log k)=O(n)

与给定数的最大公约数 \gcd(x,k)

\gcd(x,k)= \begin{cases} gcd(\frac{x}{P(x)},k)\times P(x) &,P(x)\mid \frac{k}{gcd(\frac{x}{P(x)},k)} \\ gcd(\frac{x}{P(x)},k) \end{cases}