• UVA10140 Prime Distance


    UVA10140 Prime Distance

     给定两个整数L,R(1<=L<=R<=2^{31},R-L<=10^6)L,R(1<=L<=R<=231,RL<=106),求闭区间 [L,R][L,R] 中相邻两个质数的差的最小值和最大值是多少,分别输出这两个质数。

    • 首先我们发现:R-LRL 的范围很小,我们应该要能够快速求出 Lsim RLR 之间的质数。

      显然有推论:任意一个合数 xx 必定包含一个不超过 sqrt xx 的质因子。

      所以我们可以筛出 [1,sqrt R][1,R] 之间的所有质数,对于每个质数 pp,把 [L,R][L,R] 中能被 pp 整除的数标记为合数。最终没有被标记的数就是质数,对相邻的质数两两比较,找出差值最小和最大的即可。


    #include <map>
    #include <cmath>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    using namespace std;
    
    typedef long long LL;
    #define res register int 
    const LL N=1e6+100;
    LL v[N],p[N],tot;
    LL L,R;
    
    inline LL max(LL a,LL b){return a>b?a:b;}
    inline LL min(LL a,LL b){return a<b?a:b;}
    
    inline void primes(LL n)
    {
        memset(v,0,sizeof(v)); tot=0;
        for(res i=2 ; i<=n ; i++)
        {
            if(!v[i]) v[i]=i,p[++tot]=i;
            for(res j=1 ; j<=tot ; j++)
            {
                if(p[j]>n/i || p[j]>v[i]) break;
                v[i*p[j]]=p[j];
            }
        }
    }
    
    LL a[N],cnt;
    LL vis[N];
    int main()
    {
        primes(N);
        while(cin>>L>>R)
        {
            memset(vis,0,sizeof(vis));
            for(res i=1 ; i<=tot ; i++)
            {
                for(res j=L/p[i] ; p[i]*j<=R ; j++)
                {
                	LL x=j*p[i];
                	if(j>1 && x>=L) vis[x-L]=1;
    			}
            }
            if(L==1) vis[0]=1;
            cnt=0;
            for(res i=L ; i<=R ; i++) if(!vis[i-L]) a[++cnt]=i;
            if(cnt<=1) {
                puts("There are no adjacent primes.");
                continue;
            }
    
            LL maxn(-1e9),minn(1e9),x,y;
            for(res i=1 ; i<cnt ; i++) 
                if(a[i+1]-a[i]<minn) minn=a[i+1]-a[i],x=a[i],y=a[i+1];
            printf("%lld,%lld are closest, ",x,y);
            for(res i=1 ; i<cnt ; i++) 
                if(a[i+1]-a[i]>maxn) maxn=a[i+1]-a[i],x=a[i],y=a[i+1];
            printf("%lld,%lld are most distant.
    ",x,y);		
        }
        return 0;
    }
    

      

  • 相关阅读:
    Jquery的事件与动画-----下雨的天气好凉爽
    JQuery选择器--------没有它就没有页面效果
    JavaScript对象--------------你又知道那些
    实体类----app-config
    知错就改,善莫大焉!!!
    二分查找模板
    《软件工程》学习资料积累
    《计算机算法设计与分析》的学习资源和好的课程积累
    软件的概念
    递归方程的求解和算法时间复杂度的分析
  • 原文地址:https://www.cnblogs.com/wmq12138/p/10425157.html
Copyright © 2020-2023  润新知