分拆素数和
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #define N 10001 5 6 int main(){ 7 char flag[N]; 8 int i; 9 int j; 10 int number; 11 int amount; 12 13 memset(flag,'0',N); 14 flag[0]='1'; 15 flag[1]='1'; 16 17 for(i=2;i<=sqrt(N);i++){ 18 if(flag[i]=='0'){ 19 for(j=i*i;j<N;j+=i) 20 flag[j]='1'; 21 } 22 } 23 24 while(1){ 25 amount=0; 26 scanf("%d",&number); 27 28 if(number==0) 29 break; 30 31 for(i=0;i<=number;i++){ 32 if(flag[i]=='0' && flag[number-i]=='0') 33 amount++; 34 } 35 36 printf("%d\n",amount/2); 37 } 38 39 return 0; 40 }