首页 > 其他分享 >筛子题

筛子题

时间:2024-04-20 21:56:52浏览次数:15  
标签:筛子 frac gcd cdot text PA cases

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

相关文章

  • Flex筛子布局
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>......
  • 筛子
    MIN_25筛适用范围亚线性(\(O(\dfrac{n^\frac{3}{4}}{\logn})\))求解部分积性函数的前缀和。要求\(f(x)\)是关于\(x\)的多项式函数且项数不是很多,次数不是很大,而且可以较快地求出\(f(p^c)\),其中\(p\)是一个素数描述给定\(n\)和积性函数\(f\)求\(\sum\limits......
  • 飞机误点时胡的一个筛子
    回杭州的路上胡的。其实是模拟赛考了一个积性函数前缀和,然后我由于生病没打,所以只胡了,然后由于不想整洲阁筛,所以胡了一个筛子。应该比较简单,适用范围也较小,大致能搞DIVCNTK这种满足\(f(p)=C\)(常数)且\(f(p^a)\)可以快速求的,不过复杂度不是很优,常数也不小。之前我只会\(O(......
  • 筛子游戏
    筛子游戏题解题目大意:吉吉国王正在玩一款手游,这个手游的规则非常简单。一开始你会得到三个筛子,三个筛子分别有\(k1,k2,k3\)面,也就是说分别可以扔出[1,k1],[1,k2],[......
  • python 写一行代码,计算随机6000次摇筛子,每一个对应出现的次数
    importrandomf1=0f2=0f3=0f4=0f5=0f6=0for_inrange(6000):face=random.randint(1,6)ifface==1:f1+=1elifface......