poj 3518(筛选素数)

#include <cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define maxlen 1300000
bool a[maxlen];
inline void isp(){
    memset(a,1,sizeof(a));
    a[0]=a[1]=0;
    for(int i=2;i*i<maxlen;i++)
        if(a[i])
            for(int j=i*i;j<maxlen;j+=i)
                a[j]=0;
}
int main(int argc, char** argv) {
    int  m,ans,i;
    isp();
    while(scanf("%d",&m) && m){
        if(a[m]){
            printf("0\n"); continue;
        }
        i=ans=m;
        while(!a[ans]) ans++;
        while(!a[i]) i--;
        ans-=i;
        printf("%d\n",ans);
    }
    return 0;
}


你可能感兴趣的:(poj 3518(筛选素数))