把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input 输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。 Output 对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。 Sample Input
30 26 0Sample Output
3 2
题解:对每个数枚举,判断拆的两个数是否是素数,是就记录。因为记录了2遍,最后结果再除以2。
#include <stdio.h>
#include <math.h>
int sushu(int x)
{
int i;
int flag = 1;
for(i = 2;i <= sqrt(x) && flag == 1;i++)
{
if(x % i == 0)
{
flag = 0;
}
}
return flag;
}
int main()
{
int number[500];
int i,j;
int count[500] = {0};
int flag = 1;
for(i = 0;flag == 1;i++)
{
scanf("%d",&number[i]);
if(number[i] == 0)
flag = 0;
}
for(i = 0;number[i] != 0;i++)
{
for(j = 2;j < number[i] - 1;j++)
{
if((sushu(j) == 1) && (sushu(number[i] - j)) == 1)
count[i]++;
}
}
for(i = 0;number[i] != 0;i++)
{
printf("%d\n",count[i] / 2);
}
return 0;
}