#include <iostream>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <sstream>
#include <string>
#include <cstdlib>
using namespace std;

template <class T> int streamvar(std::istream& in, T& var)
{
    if (!in) {
        cerr << "invalid istream" << endl;
        return 1;
    }
    in >> var;
    if (in.fail()) {
        cerr << "no var" << endl;
        return 1;
    }
    return 0;
}
template <class T> int streamvec(std::istream& in, std::vector<T> &v)
{
    v.clear();
    string s;

    if (!in) {
        cerr << "invalid istream" << endl;
        return 1;
    }
    getline(in, s);
    if (in.fail()) {
        cerr << "no line" << endl;
        return 1;
    }
    istringstream is(s);
    while (1) {
        T tmp;
        is >> tmp;
        if (is.fail())
            break;
        v.push_back(tmp);
    }
    return 0;
}

#define NUM 1000000
int main(void)
{
    bool prime[NUM];
    int array[NUM] = {};
    for (int i = 0; i < NUM; i++) 
        prime[i] = 1;
    prime[0] = prime[1] = 0;

    for (int i = 0; i < NUM; i++) {
        if (prime[i]) {
            for (int j = i*2; j < NUM; j+=i) {
                prime[j] = 0;
            }
        }
    }
    array[0] = 0;
    for (int i = 1; i < NUM; i++) 
        array[i] = array[i-1] + prime[i];

    int n;
    while (cin >> n) {
        cout << array[n] << endl;
    }
    return 0;
}