孪生素数问题
时间限制: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;
}