质数朴素筛法与埃氏筛法复杂度的证明

定积分放缩法

若对于一个初等函数 \(f(x)\) 在闭区间 \(I\) 上单调、连续、可导

则对于满足 \(a_n=f(n)\) 的数列 \(\{a_n\}\) ,和满足 \([l-1,r+1]\subset I\) 的区间 \([l,r]\) ,有:

\(f(x)\) 单调不减时:\(\displaystyle \int_{l-1}^rf(x)\text dx\leq\sum_{i=l}^ra_i\leq\int_l^{r+1}f(x)\text dx\)

\(f(x)\) 单调不增时:\(\displaystyle \int_{l-1}^rf(x)\text dx\geq\sum_{i=l}^ra_i\geq\int_l^{r+1}f(x)\text dx\)

证明:

\(f(x)\) 单调不减时:

\(\displaystyle \int_{l-1}^rf(x)\text dx=\sum_{i=l}^r(\int_{i-1}^if(x)\text dx)\leq\sum_{i=l}^r(\int_{i-1}^if(i)\text dx)=\sum_{i=l}^rf(i)=\sum_{i=l}^ra_i\)

\(\displaystyle \int_l^{r+1}f(x)\text dx=\sum_{i=l}^r(\int_i^{i+1}f(x)\text dx)\geq\sum_{i=l}^r(\int_i^{i+1}f(i)\text dx)=\sum_{i=l}^rf(i)=\sum_{i=l}^ra_i\)

因此 \(\displaystyle \int_{l-1}^rf(x)\text dx\leq\sum_{i=l}^ra_i\leq\int_l^{r+1}f(x)\text dx\)

同理可证 \(f(x)\) 单调不增时 \(\displaystyle \int_{l-1}^rf(x)\text dx\geq\sum_{i=l}^ra_i\geq\int_l^{r+1}f(x)\text dx\)

特别的,当 \(\displaystyle \int_{l-1}^lf(x)\text dx,\int_r^{r+1}f(x)\text dx\) 相比于 \(\displaystyle \int_l^rf(x)\text dx\) 为常数时

可以近似地认为 \(\displaystyle \sum_{i=l}^ra_i=\int_l^rf(x)\text dx+C,C\) 为常数


素数定理

函数 \(\pi(n)\) 表示 \(n\)\(n\) 以内的质数个数

由质数定理得到,\(\pi(n)\) ~ \(Li(n)\) ~ \({n\over \ln n}\)

其中 \(Li(n)\) 是对数积分 \(\displaystyle Li(x)=\int_2^x{\text dt\over \ln t}\)

因此, \(n\) 以内的质数个数大概是 \({n\over \ln n}\) ,密度大概是 \({({n\over \ln n})\over n}={1\over \ln n}\)

因此,第 \(i\) 个质数的大小大概是 \(i\ln i\)


最小质因数的分布概率

考虑第 \(m\) 个质数 \(p_m\) ,以它为最小质因数的的正整数,分布的概率,大概为 \(\displaystyle P(fc=p_m)={1\over p_m}\prod_{i=1}^{m-1}(1-{1\over p_i})\)

证明:考虑 \(\displaystyle prod_m=\prod_{i=1}^{m-1}p_i\)

首先,对于所有 \(\forall n\in Z_+\)

\(m=1\) 时,\(prod_m=1\) ,有 \({1\over 2}\) 的概率最小质因数为 \(p_1=2\)

假设 \(m\leq k\) 以内都成立,则剩余的数的概率为

\(\displaystyle P(fc>p_m)\)
\(\displaystyle =1-\sum_{i=1}^kP(fc=p_i)\)
\(\displaystyle =1-\sum_{i=1}^k({1\over p_i}\prod_{j=1}^{i-1}(1-{1\over p_j})\ )\)
\(\displaystyle =1-{1\over p_1}-\sum_{i=2}^k({1\over p_i}\prod_{j=1}^{i-1}(1-{1\over p_j})\ )\)
\(\displaystyle =(1-{1\over p_1})(1-\sum_{i=2}^k({1\over p_i}\prod_{j=2}^{i-1}(1-{1\over p_j})\ )\ )\)
\(=\dots\)
\(\displaystyle =\prod_{i=1}^k(1-{1\over p_i})\)

而对于剩下的数,一定可以写为 \(n=r\cdot prod_{k+1}+t,r\in Z,t\in Z_+\)\(gcd(t,prod_{k+1})=1\) 的形式

因此, \(t\) 的取值一共有 \(\displaystyle \boldsymbol \varphi(prod_{k+1})=\prod_{i=1}^k\boldsymbol \varphi(p_i)=\prod_{i=1}^k(1-{1\over p_i})\)

即, \(t\) 取满 \(prod_{k+1}\) 的简化剩余类

\(r=p_{k+1}\cdot a+b,a,b\in Z\)\(b<p_{k+1}\)

代入得到 \(n=(p_{k+1}\cdot a+b)\cdot prod_{k+1}+t=a\cdot p_{k+1}\cdot prod_{k+1}+(b\cdot prod_{k+1}+t)\)

因此 \(n\equiv b\cdot prod_{k+1}+t(\mod p_{k+1})\)

要使得 \(fc_n=p_{k+1}\) 则只需要 \(p_{k+1}\mid n\)\(b\cdot prod_{k+1}+t\equiv n\equiv 0(\mod p_{k+1})\)

由于 \(\forall i\leq k,gcd(p_i,p_{k+1})=1\) 因此 \(gcd(prod_{k+1},p_{k+1})=1\)

\(c\equiv prod_{k+1}(\mod p_{k+1}),0<c<p_{k+1}\)\([c]\)\(p_{k+1}\) 的简化剩余类之一

因此,要使 \(fc_n=p_{k+1}\) 则需要 \(bc+t\equiv 0(\mod p_{k+1})\) 成立

\(0<q<prod_{k+1}\)\(t\) 在模 \(prod_{k+1}\) 的负元,则 \(bc\equiv q(\mod p_{k+1})\)

由于 \(c\)\(p^{k+1}\) 的简化剩余类之一,因此存在逆元,方程两边乘上逆元得到

\(b\equiv qc^{-1}(\mod p_{k+1})\)

因此,对于任意的 \(q\) 都存在唯一的一个 \(b\) 使得上述方程成立 \((0\leq b<p_{k+1})\)

所以 \(bc+t\equiv 0(\mod p_{k+1})\) 对每个 \(t\) ,有唯一解

即对 \(prod_{k+1}\) 的每个简化剩余类 \(t\)\(p_{k+1}\mid (a\cdot p_{k+1}\cdot prod_{k+1}+b\cdot prod_{k+1}+t)\) 有唯一解

故对 \(prod_{k+1}\) 的每个简化剩余类 \(t\)\(n=(p_{k+1}\cdot a+b)\cdot prod_{k+1}+t,fc_n=p_{k+1}\) 都有唯一解

设事件 \(A\)\(fc_n=p_{k+1}\) ,事件 \(B\)\(fc_n>p_k\)

\(\displaystyle P(A\mid B)={1\over \boldsymbol \varphi(prod_{k+1})}\sum_{t=1}^{\boldsymbol \varphi(prod_{k+1})}{1\over p_{k+1}}={1\over p_{k+1}}\)

故由条件概率公式得到 \(\displaystyle P(fc=p_{k+1})=P(A)=P(AB)=P(B)\cdot P(A\mid B)={1\over p_{k+1}}\prod_{i=1}^k(1-{1\over p_i})\)

所以 \(m\leq k\) 成立即可推出 \(m=k+1\) 成立

最后由归纳法得,最小质因数的分布概率成立


判素数的期望复杂度

很显然,判定 \(n\) 是否为素数的最坏复杂度即是当 \(n\) 为素数时,复杂度为 \(O(\sqrt n)\)

但判素数的期望复杂度显然比这小

首先由质数密度得到 \(P(n\in Prime)\approx {1\over \ln n}\)

故质数对期望的贡献为 \(\sqrt n\cdot P(n\in Prime)\approx {\sqrt n\over \ln n}\)

接下来考虑合数对期望的贡献显然为:

\(\displaystyle \sum_{p_i\leq \sqrt n}p_i\cdot P(fc_n=p_i)\)

\(\displaystyle \approx\sum_{i=1}^{\sqrt n\over \ln \sqrt n}p_i \cdot {1\over p_i}\cdot P(fc_n>p_{i-1})\)

\(\displaystyle =\sum_{i=1}^{2\sqrt n\over \ln n}\prod_{j=1}^{i-1}(1-{1\over p_j})\)

\(\displaystyle \leq\sum_{i=1}^{2\sqrt n\over \ln n}\prod_{j=1}^{i-1}(1-0)\)

\(\displaystyle =\sum_{i=1}^{2\sqrt n\over \ln n}1\)

\(\displaystyle ={2\sqrt n\over \ln n}\)

因此,期望复杂度 \(T(n)\leq {\sqrt n\over \ln n}+{2\sqrt n\over \ln n}={3\sqrt n\over \ln}\)

因此判素数的期望复杂度为 \(O({\sqrt n\over \log n})\)


朴素筛法的复杂度证明

复杂度为上述期望复杂度的求和

\(\displaystyle T(n)=\sum_{i=1}^n{\sqrt n\over \ln n}\)

\(\displaystyle \int_2^n{\sqrt t\over \ln t}\text dt\) 同阶

因此 \(T(n)=\displaystyle \int_2^n{\sqrt t\over \ln t}\text dt=\int_2^n{\text dt^{3\over 2}\over\ln t^{3\over 2}}=Li(n^{3\over 2})\)~\(n^{3\over 2}\over \ln n^{3\over 2}\)

故复杂度为 \(O({n\sqrt n\over \log n})\)

或记为 \(O({n^{3\over 2}\over \log n})\)

常数大概为 \(2\)


埃氏筛复杂度证明

每个数都把它的倍数打上了标记

因此 \(\displaystyle T(n)=\sum_{p_i\leq n}\lfloor{n\over p_i}\rfloor\approx\sum_{i=1}^{n\over \ln n}{n\over p_i}\approx n\sum_{i=1}^{n\over \ln n}{1\over i\ln i}\)

\(\displaystyle T(n)=n\int_2^{n\over \ln n}{1\over t\ln t}\text dt=n(\ln \ln t)|^{n\over\ln n}_2=n(\ln\ln n-\ln\ln\ln n+C)\)

所以复杂度为 \(O(n\log \log n)\)

埃氏筛优化复杂度证明

\(\displaystyle T(n)=\sum_{p_i\leq \sqrt n}\lfloor{n-p^2\over p}\rfloor\approx n\sum_{i=2}^{\sqrt n\over \ln\sqrt n}{1\over i\ln i}-\sum_{i=1}^{\sqrt n\over\ln\sqrt n}i\ln i\)

\(\displaystyle \sum_{i=2}^{\sqrt n\over \ln\sqrt n}{1\over i\ln i}\)~\(\displaystyle \int_2^{\sqrt n\over \ln\sqrt n}{1\over t\ln t}\text dt=(\ln\ln t)|^{\sqrt n\over \ln\sqrt n}_2=\ln\ln\sqrt n-\ln\ln\ln\sqrt n+C\)

故前半部分复杂度为 \(O(n\log\log n)\)

后半部分 \(\displaystyle \sum_{i=1}^{\sqrt n\over\ln\sqrt n}i\ln i\)~\(\displaystyle \int_2^{\sqrt n\over\ln\sqrt n}t\ln t\text dt=({1\over 2}x^2\ln x-{1\over 4}x^2)|^{\sqrt n\over\ln\sqrt n}_2\)

代入计算得 \({1\over 4}\cdot{n\over (\ln \sqrt n)^2}(\ln({\sqrt n\over \ln \sqrt n})-2)+C={n\over \ln^2n}\cdot ({2\sqrt n\over \ln n}-2)+C\)

因此复杂度是 \(o(n\log\log n)\)

最后,总复杂度是 \(O(n\log\log n)\) 但常数更优

posted @ 2020-03-08 10:30  JustinRochester  阅读(1028)  评论(0编辑  收藏  举报