hdu 2098 分拆素数和

WA了好几发..........原来是我的数组越界了,习惯性定义了prime[maxn] 但是每次都去改写maxn位置!!!!

太大意了 要时刻提醒自己不要忘记数组不要越界!

下面是AC代码~~~

 1 #include<iostream>
 2 #include<memory.h>
 3 using namespace std;
 4 #define maxn 10005
 5 int prime[maxn];
 6 void f()
 7 {
 8     memset(prime,0,sizeof(prime));
 9     prime[0] = prime[1] = 1;
10     for(int i = 2; i < maxn; i++)
11     {
12         if(!prime[i])
13         {
14             for(int j = i * 2; j < maxn; j += i)
15                 prime[j] = 1;
16         }
17     }
18 }
19 int main()
20 {
21     int n,cnt;
22     f();
23     while(cin>>n && n)
24     {
25         cnt = 0;
26         for(int i = 3; i < n / 2; i += 2)  //只考虑奇数
27         {
28             if(prime[i] == 0 && prime[n - i] == 0)
29             {
30                 if(i != n - i)//!!!!!!!!
31                     cnt++;
32             }
33         }
34         cout<<cnt<<endl;
35     }
36     return 0;
37 }
原文地址:https://www.cnblogs.com/imLPT/p/3879678.html