nefu 2 打素数表

#include<iostream>
#include<cmath>
#define M 16777220
using namespace std;

bool composite[16777220];
int main()
{
   int len=sqrt(M);
   for(int i=2;i<=len;i++)
      if(composite[i]==0)
      for(int j=i*i;j<M;j+=i)
         composite[j]=1;

  int n;
  while(cin>>n)
  {   int count=0;
      for(int i=2;i<=n/2;i++)
      if(composite[n-i]==0&&composite[i]==0)  count++;
      cout<<count<<endl;
  }
}
// 打素数表 只需要 O(nlogn)的算法
题目地址:http://acm.nefu.edu.cn/test/problemshow.php?problem_id=2


posted @ 2013-07-08 20:21  814jingqi  阅读(125)  评论(0编辑  收藏  举报