#include <stdio.h>
#include <algorithm>  // fill 関数を使うのに必要
#define PN_NUM 1000000    // 1000000 未満の非負数を素数判定する
using namespace std;

bool prime_number[PN_NUM];

// エラトステネスのふるい
void set_prime_number(bool* array) {

  fill(array, array + PN_NUM, true); // array の全要素を true にする
  array[0] = array[1] = false; // 0 と 1 は素数ではない
  for (int i = 2; i < PN_NUM; i++) {
    if (!array[i])
      continue;
    for (int j = i * 2; j < PN_NUM; j += i) {
      array[j] = false; // 素数の倍数は，素数ではない
    }
  }

}

int main() {
  int cnt, n;

  set_prime_number(prime_number);
  while (scanf("%d", &n) != EOF) {
    cnt = 0;
    for (int i = 0; i <= n; i++) {
      if (prime_number[i]) // i が素数ならば
        cnt++;             // cnt をインクリメント
    }
    printf("%d\n", cnt);   // cnt を出力
  }

  return 0;
}