把一个偶数拆成两个不同素数的和,有几种拆法呢?
30 26 0
3 2
分析:先用素数打表法把素数找出来,之后两两素数相加看是否等于该偶数;
代码:
#include<stdio.h>
int n,i,j,a[1000001],p[100000];
int main()
{
scanf("%d",&n);
while(n!=0)
{
int k=0,t=0;
a[1]=0;
for(i=2;i<=n;i++)
a[i]=1;
for(i=2;i<=n;i++)
if(a[i]){
p[t++]=i;
for(j=i+i;j<=n;j+=i)
a[j]=0;
}
for(i=0;i<t-1;i++)
for(j=1+i;j<t;j++)
if(p[i]+p[j]==n)
k++;
printf("%d\n",k);
scanf("%d",&n);
}
return 0;
}