质数朴素筛法与埃氏筛法复杂度的证明
定积分放缩法
若对于一个初等函数 \(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)\) 但常数更优