aoj 0009 Prime Number

Write a program which reads an integer n and prints the number of prime numbers which are less than or equal to n. A prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. For example, the first four prime numbers are: 2, 3, 5 and 7.

Input

Input consists of several datasets. Each dataset has an integer n (1 ≤ n ≤ 999,999) in a line.

The number of datasets is less than or equal to 30.

Output

For each dataset, prints the number of prime numbers.

Sample Input

10
3
11

Output for the Sample Input

4
2
5

筛选素数表并记录素数个数。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#define MAX 1000000
#define inf 0x3f3f3f3f
using namespace std;
bool isprime[MAX] = {true,true,false,false};
int prime_num[MAX];
int c;
int main() {
    for(int i = 2;i < MAX;i ++) {///筛选素数 并记录小于等于i的素数个数
        if(!isprime[i]) {
            c ++;
            if(i < 1000)
            for(int j = i * i;j < MAX;j += i) {
                isprime[j] = true;
            }
        }
        prime_num[i] = c;
    }
    int n;
    while(~scanf("%d",&n)) {
        printf("%d
",prime_num[n]);
    }
}
原文地址:https://www.cnblogs.com/8023spz/p/9471180.html