首页 > 代码库 > hdu 2098 分拆素数和

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 }