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 <queue>
#include <map>
#include <cstdio>
#include <algorithm>
#include <string>
#include <set>
using namespace std;
const int M=1000000+5;
bool is_prime[M];
int prime[M];
int main(){
for(int i=2;i<=M;i++){
if(!is_prime[i]){
for(int j=2*i;j<=M;j+=i){
is_prime[j]=true;
}
}
}
int c=0;
for(int i=2;i<=M;i++){
if(!is_prime[i]){
prime[i]=++c;
}
else{
prime[i]=c;
}
}
int n;
while(cin>>n){
cout<<prime[n]<<endl;
}
return 0;