输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
#include<stdio.h>
#include<math.h>
int sushu(int m)//编写一个判断一个数是否为素数的函数
{
int i;
if(m==1)
return 0;
if(m==2||m==3)
return 1;
if(m>=4)
{
for(i=2;i<=sqrt(m);i++)
{
if(m%i==0)
return 0;
}
return 1;
}
}
int main()
{
int m,i,s=0;
while(scanf("%d",&m)!=EOF&&m!=0)
{
for(i=1;i<m;i++)//在1到m之内判断是否有2个素数的和是这个数m
{
if(sushu(i)==1&&sushu(m-i)==1&&i!=m-i)//判断i和m-i是否同时为素数且i和m-i不相等
s++;
}
printf("%d\n",s/2);//因为在1到m之内素数i和m-i会被计算两次,所有最后s要除以2
s=0;
}
return 0;
}