hdu2098 分拆素数和 筛法

分拆素数和

 1 /*
 2 写于13年3月21日,练习素数筛法
 3 用普通的方法超时啊啊啊啊!!!
 4 2013-03-21 11:19:23    Accepted    2098    15MS    268K
 5 */
 6 #include <iostream>
 7 #include <stdio.h>
 8 #include <string.h>
 9 using namespace std;
10 bool prim[10010];//prim[i]=1表示i为素数
11 void is_prim()
12 {
13     memset(prim,1,sizeof(prim));
14     prim[0]=prim[1]=0;//初始化
15     for(int i=2;i<10010;i++)//筛法
16     {
17         if(prim[i])
18         {
19             for(int j=i*i;j<10010;j+=i)
20             {
21                 prim[j]=0;
22             }
23         }
24     }
25 }
26 int main()
27 {
28     int n;
29     is_prim();
30     while(scanf("%d",&n)!=EOF)
31     {
32         if(!n)break;
33         int ans=0;
34         for(int i=2;i<n/2;i++)//两个素数要不同才可以
35         {
36             if(prim[i]&&prim[n-i])
37             {
38                 //printf("%d  %d\n",i,n-i);
39                 ans++;
40             }
41         }
42         printf("%d\n",ans);
43     }
44     return 0;
45 }

 

posted on 2013-03-21 11:30  行者1992  阅读(195)  评论(0编辑  收藏  举报