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


    定积分放缩法

    若对于一个初等函数 (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) ext dxleqsum_{i=l}^ra_ileqint_l^{r+1}f(x) ext dx)

    (f(x)) 单调不增时:(displaystyle int_{l-1}^rf(x) ext dxgeqsum_{i=l}^ra_igeqint_l^{r+1}f(x) ext dx)

    证明:

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

    (displaystyle int_{l-1}^rf(x) ext dx=sum_{i=l}^r(int_{i-1}^if(x) ext dx)leqsum_{i=l}^r(int_{i-1}^if(i) ext dx)=sum_{i=l}^rf(i)=sum_{i=l}^ra_i)

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

    因此 (displaystyle int_{l-1}^rf(x) ext dxleqsum_{i=l}^ra_ileqint_l^{r+1}f(x) ext dx)

    同理可证 (f(x)) 单调不增时 (displaystyle int_{l-1}^rf(x) ext dxgeqsum_{i=l}^ra_igeqint_l^{r+1}f(x) ext dx)

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

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


    素数定理

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

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

    其中 (Li(n)) 是对数积分 (displaystyle Li(x)=int_2^x{ ext dtover ln t})

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

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


    最小质因数的分布概率

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

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

    首先,对于所有 (forall nin Z_+)

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

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

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

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

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

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

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

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

    因此 (nequiv bcdot prod_{k+1}+t(mod p_{k+1}))

    要使得 (fc_n=p_{k+1}) 则只需要 (p_{k+1}mid n)(bcdot prod_{k+1}+tequiv nequiv 0(mod p_{k+1}))

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

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

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

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

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

    (bequiv qc^{-1}(mod p_{k+1}))

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

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

    即对 (prod_{k+1}) 的每个简化剩余类 (t)(p_{k+1}mid (acdot p_{k+1}cdot prod_{k+1}+bcdot 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(Amid B)={1over oldsymbol varphi(prod_{k+1})}sum_{t=1}^{oldsymbol varphi(prod_{k+1})}{1over p_{k+1}}={1over p_{k+1}})

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

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

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


    判素数的期望复杂度

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

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

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

    故质数对期望的贡献为 (sqrt ncdot P(nin Prime)approx {sqrt nover ln n})

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

    (displaystyle sum_{p_ileq sqrt n}p_icdot P(fc_n=p_i))

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

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

    (displaystyle leqsum_{i=1}^{2sqrt nover ln n}prod_{j=1}^{i-1}(1-0))

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

    (displaystyle ={2sqrt nover ln n})

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

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


    朴素筛法的复杂度证明

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

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

    (displaystyle int_2^n{sqrt tover ln t} ext dt) 同阶

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

    故复杂度为 (O({nsqrt nover log n}))

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

    常数大概为 (2)


    埃氏筛复杂度证明

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

    因此 (displaystyle T(n)=sum_{p_ileq n}lfloor{nover p_i} floorapproxsum_{i=1}^{nover ln n}{nover p_i}approx nsum_{i=1}^{nover ln n}{1over iln i})

    (displaystyle T(n)=nint_2^{nover ln n}{1over tln t} ext dt=n(ln ln t)|^{noverln n}_2=n(lnln n-lnlnln n+C))

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

    埃氏筛优化复杂度证明

    (displaystyle T(n)=sum_{p_ileq sqrt n}lfloor{n-p^2over p} floorapprox nsum_{i=2}^{sqrt nover lnsqrt n}{1over iln i}-sum_{i=1}^{sqrt noverlnsqrt n}iln i)

    (displaystyle sum_{i=2}^{sqrt nover lnsqrt n}{1over iln i})~(displaystyle int_2^{sqrt nover lnsqrt n}{1over tln t} ext dt=(lnln t)|^{sqrt nover lnsqrt n}_2=lnlnsqrt n-lnlnlnsqrt n+C)

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

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

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

    因此复杂度是 (o(nloglog n))

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

  • 相关阅读:
    从0开始学习C#第三天
    金盾视频加密器V2014视频加密原理分析
    从0开始学习C#第二天
    从0开始学习C#第一天
    hook NtTerminateProcess进行应用的保护
    Wireshark简单使用教程3——附视频
    Wireshark简单使用教程2——附视频
    Wireshark简单使用教程1——附视频
    一个bat病毒分析(part1)
    社团的CTF逆向题WriteUp
  • 原文地址:https://www.cnblogs.com/JustinRochester/p/12441207.html
Copyright © 2020-2023  润新知