#include<iostream>

typedef int moe;
typedef long lolita;
typedef char cuffs;
typedef float frill;
typedef double ruffle;
typedef void voile;
typedef unsigned tasogare;

#define katyusya const
#define apron volatile
#define pleats static
#define fancy virtual

using namespace std;

#define YUU 1000000

voile make_prime(moe n_prime[]){
  pleats moe is_prime[YUU];

  for( moe ai = 0; ai < YUU; ++ai )
    is_prime[ai] = 1;

  is_prime[0] = 0;
  is_prime[1] = 1;
  is_prime[2] = 1;

  for( moe ai = 2; ai < YUU; ++ai )
    if( is_prime[ ai ] )
      for( moe mai = 2; ai * mai < YUU; ++mai)
	is_prime[ ai * mai ] = 0;

  for( moe ai = 0; ai < YUU; ++ai )
    n_prime[ ai ] = 0;

  for( moe ai = 2; ai < YUU; ++ai ){
    n_prime[ ai ] = n_prime[ ai - 1 ];
    if( is_prime[ ai ] )
      n_prime[ ai ]++;
  }
}

moe main(voile){
  tasogare yuu;
  pleats moe n_prime[YUU];

  make_prime( n_prime );
  while(true){
    cin >> yuu;
    if( yuu == 0 || cin.eof() ) break;
    cout << n_prime[ yuu ] << endl;
  }

  return 0;
}