把一个偶数拆成两个不同素数的和,有几种拆法呢?
30 26 0
3 2
题解:先筛选出范围内的所有素数,然后逐个判定
#include<cstdio>
bool prime[10002];
int main()
{
int j,x,y,i,t,flag;
prime[0]=prime[1]=false;
for(i=2;i<10002;i++)
prime[i]=true;
for(i=2;i<10002;i++)
if(prime[i])
{
for(j=i*i;j<10002;j+=i)
prime[j]=false;
}
while(scanf("%d",&x),x)
{
t=0;
for(i=3;i<x/2;i++)
if(prime[x-i]&&prime[i]) t++;
printf("%d\n",t);
}
return 0;
}