筛子题

T1

Statement

求出 \(\gcd(n,k)\) 的线性筛递推式,并证明复杂度是线性的。

Solution

\[ \gcd(n,k)=\begin{cases} 1&(n=1)\\ \gcd(\frac n{P(n)},k)\cdot P(n)&(\gcd(\frac n{P(n)},k)\cdot P(n)\mid k)\\ \gcd(\frac n{P(n)},k)&\text{else} \end{cases} \]

T2

Statement

求出 \(d(n)=\sigma_0(n)\)\(n\) 的约数个数的线性筛递推式。

Solution

\(\text A(n)\) 表示 \(n\) 的最小质因子次数,\(\text{PA}(n)\) 表示 \(\text P(n)^{\text A(n)}\),这两个东西可轻易 \(\mathcal O(n)\) 求出

\[d(n)=\begin{cases} 1&(n=1)\\ d(\frac n{\text{PA}(n)})\cdot(\text A(n)+1)&(n\not=1) \end{cases} \]

T3

Statement

求出 \(\sigma_k(n)=\sum_{i\mid n}i^k\) 的线性筛递推式,并证明复杂度是线性。

Solution

\[\sigma_k(n)=\begin{cases} 1&(n=1)\\ \sigma_k(\frac n{\text{PA}(n)})\cdot\dfrac{(\text{PA}(n))^k-1}{\text{P}(n)^k-1}&(n\not=1) \end{cases} \]

\(n\) 以内共 \(\mathcal O(\frac n{\ln n})\) 个质数,对于每个质数 \(p\)\(\mathcal O(\log k)\) 求出 \(p^k\),然后用 \(p^k\) 依次求出 \((p^k)^i=(p^i)^k\),最坏情况下 \(p^k=2\) 时共乘 \(\mathcal O(\log n)\) 次,所以一共 \(\mathcal O(n)\)

T4

Statement

\(\text{id}_k(n)=n^k\) 的线性筛递推式,并证明复杂度是线性。

Solution

\[\text{id}_k(n)=\begin{cases} 1&(n=1)\\ \text{id}_k(\frac n{\text P(n)})\cdot\text{id}_k(\text P(n))&(n\not=\text P(n))\\ n^k&(n=\text P(n)) \end{cases} \]

\(n\) 不是质数时 \(\text{id}_k(\frac n{\text P(n)})\)\(\text{id}_k(\text P(n))\) 都已求出;

\(n\) 是质数时共有 \(\mathcal O(\frac n{\ln n})\) 个这样的 \(n\),每次用 \(\log k\) 算出 \(n^k\),乘起来 \(\mathcal O(n)\).

T5

Statement

\(n\varphi(n)\) 的线性筛递推式。

Solution

\(g(n)=n\varphi(n)\)

则对于任意 \(x,y\) 满足 \(\gcd(x,y)=1\),有 \(g(xy)=xy\cdot\varphi(xy)=x\varphi(x)\cdot y\varphi(y)=g(x)\cdot g(y)\)

\(g(n)\) 有积性

\[g(n)=\begin{cases} 1&(n=1)\\ n^2\cdot\dfrac{\text P(n)-1}{\text P(n)}&(n=\text{PA}(n))\\ g(\frac n{\text{PA}(n)})\cdot g(\text{PA}(n))&(n\not=\text{PA}(n)) \end{cases} \]

T6

Statement

\(d(n)\gcd(n,k)\) 的线性筛递推式,并证明复杂度是线性。

Solution 1

\(g(n)=d(n)\gcd(n,k)\)

对于 \(x,y\) 满足 \(\gcd(x,y)=1\)\(\gcd(xy,k)=\gcd(x,k)\cdot\gcd(y,k)\)

因为 \(x\)\(y\) 的质因子组成互不重叠,故 \(x\)\(k\) 的最大公共质因子部分和 \(y\)\(k\) 的最大公共质因子部分互不重叠,由此上式成立

\(d(n)\) 显然积性,故 \(g(xy)=d(xy)\cdot\gcd(xy,k)=d(x)\gcd(x,k)\cdot d(y)\gcd(y,k)=g(x)\cdot g(y)\)

\(g(n)\) 有积性

\(h(n)\) 表示 \(k\)\(\text P(n)\) 的指数(分解质因数复杂度 \(<\mathcal O(n)\),故 \(\text P(n)^{h(n)}\) 可以在 \(\mathcal O(n)\) 之内计算)

\[g(n)=\begin{cases} 1&(n=1)\\ (\text A(n)+1)\cdot\min(\text{PA(n)},\text{P}(n)^{h(n)})&(n\not=1\land n=\text{PA}(n))\\ g(\frac n{\text{PA}(n)})\cdot g(\text{PA}(n))&(n\not=1\land n\not=\text{PA}(n)) \end{cases} \]

Solution 2

\(f_1(n)=d(n)\)\(f_2(n)=\gcd(n,k)\),这两个式子在之前的问题中已经 \(\mathcal O(n)\) 解决

\(d(n)\gcd(n,k)=f_1(n)f_2(n)\)

posted @ 2024-04-20 21:50  Laijinyi  阅读(2)  评论(0编辑  收藏  举报