(TOJ1432)分拆素数和

描述

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

输入

输入包含一些正的偶数,其值不会超过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 }
 
原文地址:https://www.cnblogs.com/xueda120/p/3094032.html