C - 分拆素数和


Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u



Description



把一个偶数拆成两个不同素数的和,有几种拆法呢?


Input



输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。




Output



对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。


Sample Input



30


26


0


Sample Output



3


2


也是大水题,数据也不大,可以直接暴力过,讲所有的因数枚举一遍,然后判断是都为素数即可


#include <stdio.h>
int sushu(int a)
{
int i,leap=0;
for(i=2;i<=a/2;i++)
if(a%i==0)
{
leap=1;break;
}
if(leap==0)
return 1;
else
return 0;
}
int main()
{
int n,m,i;
while(scanf("%d",&n)!=EOF,n)
{
int num=0;
for(i=2;i<n/2;i++)
{
m=n-i;
if(sushu(i)&&sushu(m))
num++;
}
printf("%d\n",num);
}
}