nyoj-26孪生素数问题

孪生素数问题

时间限制:3000 ms | 内存限制:65535 KB

难度:3

描述 写一个程序,找出给出素数范围内的所有孪生素数的组数。一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数。有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数。
输入第一行给出N(0

#include<iostream>
#include<cstring>
using namespace std;
int a[1000001];
int main()
{
    int k=0;
    memset(a,0,sizeof(a));
    for(int i=2;i<1000010;i++)
    if(a[i]==0)
    for(int j=i*2;j<1000010;j+=i) a[j]=1;
    for(int i=2;i<1000010;i++) if(a[i]==0) a[k++]=i;
    int n,x;
    cin>>n;
    while(n--)
    {
        cin>>x;
        if(x<=2) 
        {
            cout<<"0"<<endl;
            continue;
        }
        int count=0;
        for(int i=1;i<k;i++)
        {
            if(a[i]>x) break;
            if(a[i]==a[i-1]+2||a[i]==a[i-1]+1) count++;
        }  
        cout<<count<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/liwei_av/article/details/81409659