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)\)
标签:筛子,frac,gcd,cdot,text,PA,cases From: https://www.cnblogs.com/laijinyi/p/18148246/sieves