/*
 * Copyright (C) 2011 Hiroyasu Kamo
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

/*
 * ACM-ICPC 2011 Japan Domestic Contest
 *  Problem A  Chebyshev's Theorem
 *
 *	Author: Hiroyasu Kamo <wd@ics.nara-wu.ac.jp>
 */

#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>

long
chebyshev(long x)
{
	static std::vector<long>	ptab(1, 2);
	static long	next_candidate = 3;
	for (; next_candidate < 2 * x; next_candidate += 2) {
		for (std::vector<long>::iterator p = ptab.begin();
		     *p * *p <= next_candidate; ++ p) {
			if (next_candidate % *p == 0)
				goto divided;
		}
		ptab.push_back(next_candidate);
	divided:;
	}
	return std::distance(std::upper_bound(ptab.begin(), ptab.end(), x),
			     std::upper_bound(ptab.begin(), ptab.end(), 2 * x));
}

int
main(int argc, char **argv)
{
	for (long x; std::cin >> x && x > 0; ) {
		std::cout << chebyshev(x) << "\n";
	}
	return 0;
}
