AOJ 0009 Prime Number(求素数)

题意:给定一个数n,判断从2—n中的素数个数是多少。

KEY:这里有两种做法,一是没注释那个代码测试极端数据999999就会错的,二是注释掉的那段代码才能AC。对于一眼看上去很简单的题目,特别要注意时间复杂度。

#include <iostream>
#include <stdio.h>
#include <string.h>
const int maxn = 999999 + 5;
int num[maxn];

using namespace std;

int main()
{
    int t;
    int n, m;
    while(scanf("%d", &t) != EOF){
        int m = 0;
        memset(num, 0, sizeof(num));
        n = m = 0;
       for(int i = 3; i <= t; i++){
            n = 0;
            for(int j = 2; j < i; j++){
               if(i % j != 0)
                    n++;
                else
                    break;
            }
        if(n == (i - 2))
           m++;
      //  }
        //for(int i = 0; i <= t; i++){
         //   num[i] = i;
      //  }
       // for(int i = 2; i <= t; i++){
       //     if(num[i] != 0){
      //          //num[i] = 0;
       //         for(int j = 2; j * i <= t; j++){
      //              num[j * i] = 0;
      //          }
      //      }
      //  }
      //  for(int i = 2; i <= t; i++){
      //      if(num[i] != 0)
      //          m++;
      //  }
    }
    printf("%d\n", m + 1);
   // printf("%d\n", m);
    }
    return 0;
}

 

posted on 2015-02-22 14:06  夏木微凉  阅读(165)  评论(0编辑  收藏  举报

导航