poj2739

求出素数表之后暴力搜索

 1 #include <stdio.h>
 2 #include <string.h>
 3 int prime[10000];
 4 bool number[10001];
 5 int constructPrime(int n)
 6 {
 7     int i,j;
 8     int pc=0;
 9     memset(number,false,sizeof(number));
10     for(i=2;i<=n;i++)
11         if(!number[i])
12         {
13             prime[pc++]=i;
14             for(j=i;j<=n;j+=i)
15                 number[j]=true;
16         }
17     return pc;  //pc is the number of prime
18 }
19 int main()
20 {
21     int tot=constructPrime(10000);
22     int n;
23     int i,j,tmp;
24     int rep=0;
25     while(1)
26     {
27         scanf("%d",&n);
28         if(n==0)
29             return 0;
30         rep=0;
31         for(i=0;i<tot && prime[i]<=n;i++)
32         {
33             tmp=0;
34             for(j=0;j<tot && tmp<n;j++)
35                 tmp+=prime[i+j];
36             if(tmp==n)
37                 rep++;
38         }
39         printf("%d\n",rep);
40     }
41     return 0;
42 }
posted @ 2012-10-06 10:20  sidereal  Views(133)  Comments(0)    收藏  举报