#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

template<typename T>
struct Sieve{
    vector<bool> is_prime;
    vector<T> prime;
    T prime_count;
    Sieve(T n):is_prime(n+1,true),prime_count(0){
        is_prime[0] = false;
        is_prime[1] = false;
        for (T i=2;i<=n;i++){
            if (is_prime[i]){
                prime.push_back(i);
                prime_count++;
                for (T j=2*i; j<=n ;j+=i) is_prime[j]=false;
            }
        }
    };
};

int main(){
    ll max_n = 1000000;
    ll n;
    Sieve<ll> a(max_n);
    vector<ll> prime_count(max_n,0);
    ll count = 0;
    for (ll i=0;i<max_n;i++){
        if (a.is_prime[i]) count++;
        prime_count[i] = count;
    }
    while(scanf("%lld",&n)==1){
        ll c= prime_count[n];
        printf("%lld\n", c);
    }
}
