#include #include using namespace std; const int MAXN = 100000000; bool notPrime[MAXN + 1]; int primes[MAXN]; int sieve(int n) { int primesCount = 0; int sqrt_n = (int)sqrt((double)n); primes[primesCount++] = 2; int i = 3; while (i <= sqrt_n) { if (!notPrime[i]) { primes[primesCount++] = i; int i_2 = i << 1; for (int j = i * i; j <= n; j += i_2) { notPrime[j] = true; } } i += 2; } while (i <= n) { if (!notPrime[i]) { primes[primesCount++] = i; } i += 2; } return primesCount; } int main() { int n; scanf("%d", &n); printf("%d\n", sieve(n)); return 0; }