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 }