import std.stdio;
import std.string;
import std.conv;
import std.algorithm;
import std.array;
import std.range;

int[] sieve(int n, int[] ns) {
  if(ns.empty) return ns;

  int x = ns.front;
  if(x * x >= n) return ns;

  ns = sieve(n, remove!((int a){ return a % x == 0; })(ns));
  ns.insert(0, x);
  return ns;
}

int[] primes(int n) {
  int[] ns;
  for(int i = 2; i <= n; i++) ns ~= i;
  return sieve(n, ns);
}

void main() {
  int[] data;
  while(true) {
    auto input = readln();
    if(stdin.eof()) break;
    data ~= to!int(chomp(input));
  }

  foreach(n; data) {
    writeln(primes(n).length);
  }
}