GDUFE ACM-1004

题目:http://acm.gdufe.edu.cn/Problem/read/id/1004

 

再来一个数学题--分拆素数和

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

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

Input:

输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。

Output:

对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。

Sample Input:

20
36
0

Sample Output:

2
4


思路:由2开始一个个数的试,如果到根号a都没有能都整除a的数字,那么a就是素数

难度:比较简单吧,书上有思路,有例题。

代码:
 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     int a;
 6     while(scanf("%d",&a)!=EOF)
 7     {
 8         int ch(int);
 9         int flag,i,j;
10         int b=0;
11         if(a==0)
12             break;
13         else
14         {
15             for(i=2,j=a-2;i<a/2;i++,j--)
16             {
17                 flag=ch(i);
18                 if(flag==0)
19                 {
20                     flag=ch(j);
21                     if(flag==0)
22                        b=b+1;
23                 }
24             }
25             printf("%d\n",b);
26         }
27     }
28     return 0;
29 }
30 
31 int ch(int a)
32 {
33     int flag=0;
34     int j;
35     for(j=2;j<=sqrt(a);j++)
36     {
37         if(a%j==0)
38             {
39                 flag=1;break;
40             }
41     }
42     return flag;
43 }

 

posted @ 2016-10-17 19:18  ruoruoruoruo  阅读(117)  评论(0编辑  收藏  举报