把一个偶数拆成两个不同素数的和,有几种拆法呢? Input输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。Output对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。Sample Input
30 26 0Sample Output
3 2
这个题的思路比较简单,你只需要编一个判断某个数是不是素数的功能函数,然后把小于n/2的素数i都求出来,然后求对应的n-i是不是素数即可,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int sushu(int m)
{
int i,a,flag=0;
a=sqrt(m);
for(i=2;i<=a;i++)
{
if(m%i==0)flag=1;
}
if(flag)return 0;
else return 1;
}
int main()
{
int i,cnt,n;
while(~scanf("%d",&n)&&n)
{
cnt=0;
for(i=2;i<n/2;i++)
{
if(sushu(i))
{
if(sushu(n-i))cnt++;
}
}
printf("%d\n",cnt);
}
return 0;
}