sudt2404Super Prime

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2404

一直TLE 参考的qc的代码

先将素数求出 然后把连续的素数和求出 看和是否是素数 标记上

View Code
 1 #include<stdio.h>
 2 int p[100001],o[100001],sum[100001],q[100001];
 3 int main()
 4 {
 5     int i,j, k = 0, m, n,g,f,x;
 6     g = 10;
 7     for(i = 2 ; i <= 100000 ; i++)
 8         if(p[i] == 0)
 9         {
10             for(j = i+i; ;j=j+i)
11             {
12                 if(j>100000)
13                     break;
14                 p[j] = 1;
15             }
16         }
17     k = 1;
18     for(i = 2 ; i <= 100000 ; i++)
19         if(!p[i])
20             o[k++] = i;
21     sum[1] = o[1];
22     for(i = 2 ; i <= k-1 ; i++)
23     {
24         sum[i]=sum[i-1]+o[i];
25         g=sum[i];
26          if(g<100000&&p[g]==0)
27             q[g]=1;
28     }
29     for(i = 3 ; i <= k-1 ; i++)
30         for(j = i-2 ; j >= 1 ; j--)
31         {
32             g = sum[i]-sum[j];
33             if(g>100000)
34                 break;
35             if(g<100000&&p[g]==0)
36                 q[g] = 1;
37         }    
38     scanf("%d", &m);
39     for(x = 1 ; x <= m ; x++)
40     {
41         scanf("%d", &n);
42         printf("Case %d: ",x);
43         if(q[n])
44             printf("yes\n");
45         else
46             printf("no\n");
47     }
48     return 0;
49 }

 

posted @ 2012-07-18 15:26  _雨  阅读(177)  评论(0编辑  收藏  举报