zoukankan      html  css  js  c++  java
  • 素数筛 poj 2689

    素数筛 

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    
    using namespace std;
    #define MAXN 47000
    #define inf  100000000
    
    bool z[MAXN];
    int  x[MAXN];
    bool y[1001000];
    int x1[1001010];
    
    int main()
    {
        int a,b;
        for(int i=2;i<=220;i++) //可以从小的素数开始筛 
        {
            if(!z[i])
                for(int j=i*i;j<MAXN;j+=i)
                    z[j]=1;
        }
        int cnt=0;
        for(int i=2;i<MAXN;i++) //这个范围可以筛出2147483647
            if(!z[i])
                x[cnt++]=i;
        while(scanf("%d%d",&a,&b)!=EOF)
        {
            int m1=inf,m2=-1;
            int en=b-a;
            memset(y,0,sizeof(y));
            if(a==1)
                a++;
    
            for(int i=0;i<cnt;i++)  //b-a<=1000000  从a开始筛
            {
                int a1,b1;
                a1=(a-1)/x[i]+1;
                b1=b/x[i];
                for(int j=a1;j<=b1;j++)
                    if(j>1)
                        y[j*x[i]-a]=1;
            }
    
            int cnt1=0;
    
            for(int i=0;i<=b-a;i++)
                if(!y[i])
                {
                    x1[cnt1++]=i+a;
                }
    
            int i=0,j=cnt1-1;
            while(x1[i]<a)
                i++;
            while(x1[j]>b&&j>=0)
                j--;
            int l1,r1,l2,r2;
    
            for(int k=i;k+1<=j;k++)
            {
                if(x1[k+1]-x1[k]>m2)
                {
                    m2=x1[k+1]-x1[k];
                    r2=x1[k+1];
                    l2=x1[k];
                }
                if(x1[k+1]-x1[k]<m1)
                {
                    m1=x1[k+1]-x1[k];
                    r1=x1[k+1];
                    l1=x1[k];
                }
            }
            if(m2==-1)
                printf("There are no adjacent primes.
    ");
            else
                printf("%d,%d are closest, %d,%d are most distant.
    ",l1,r1,l2,r2);
        }
        return 0;
    }
  • 相关阅读:
    springboot mail 发送邮件
    颜色透明度16进制对照表
    Java基础系列之(三)
    QQ2010协议分析系列(五)
    QQ2010协议分析系列(四)
    QQ2010协议分析系列(三)
    QQ2010协议分析系列(二)
    QQ2010协议分析系列(一)
    Java基础系列之(二)
    Java基础系列之(一)
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/6180443.html
Copyright © 2011-2022 走看看