nyoj26_孪生素数(筛选法求素数)

来源:互联网 发布:未来计价软件视频 编辑:程序博客网 时间:2024/06/01 03:59

原题链接》》》


筛选法求素数:
从3开始将素数的倍数依次标记,被标记的即为非素数

prime[4]=1;for(i=3;i<Nmax;i++)        if(!prime[i])            for(j=i+i;j<Nmax;j+=i)            prime[j]=1;

**AC代码:**
#include<stdio.h>#define Nmax 1000001bool prime[Nmax];int main(){    int N,M,i,j;    prime[4]=1;    for(i=3;i<Nmax;i++)        if(!prime[i])            for(j=i+i;j<Nmax;j+=i)            prime[j]=1;    scanf("%d",&N);    while(N--){        scanf("%d",&M);        int c=0;        for(i=3;i<=M-2;i++)            if(!prime[i]&&!prime[i+2])            c++;        if(M<3) c=0;        else if(M>3) c+=1;        else c=1;        printf("%d\n",c);    }    return 0;}
0 0
原创粉丝点击