题意:
求1e7内的哥德巴赫猜想,找出某个数可以由几对素数相加得。
思路:
直接素数打表暴力枚举即可。代码:
#define N 11234567
int n,m,sum;
bool mark[N];
int pri[N/10],cnt;
void SP()
{
cnt=0;
memset(mark,true,sizeof(mark));
mark[0]=mark[1]=false;
for(int i=2;i<N;i++)
{
if(mark[i])
pri[cnt++]=i;
for (int j=0;(j<cnt)&&(i*pri[j]<N);j++)
{
mark[i*pri[j]]=false;
if (i%pri[j]==0)
break;
}
}
}
int main()
{
int i,j,k,kk,t,x,y,z;
SP();
scanf("%d",&k);
kk=0;
while(k--)
{
scanf("%d",&n);
for(sum=0,i=0;i<cnt&&pri[i]*2<=n;i++)
if(mark[n-pri[i]])
sum++;
printf("Case %d: %d\n",++kk,sum);
}
return 0;
}