描述
把一个偶数拆成两个不同素数的和,有几种拆法呢?
输入
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
输出
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
样例输入
30
26
0
样例输出
3
2
1 #include<stdio.h> 2 #include<string.h> 3 #include<ctype.h> 4 #include<math.h> 5 6 int isprim(int n) 7 { 8 int i; 9 for(i=2; i*i<=n; i++) 10 { 11 if(n%i==0) 12 return 0; 13 } 14 return 1; 15 } 16 17 void deal(int n) 18 { 19 int i,m,s=0; 20 m=n/2; 21 for(i=3; i<m; i=i+2){ 22 if(isprim(i) && isprim(n-i)) 23 s++; 24 } 25 printf("%d\n",s); 26 } 27 28 void solve() 29 { 30 int n; 31 while(scanf("%d",&n) && n){ 32 deal(n); 33 } 34 } 35 36 int main() 37 { 38 solve(); 39 return 0; 40 }