#include #include using namespace std; const int MAXN = 100000000; int leastPrime[MAXN + 1]; int primes[MAXN]; int advancedSieve(int n) { int primesCount = 0; for (int i = 2; i <= n; ++i) { if (!leastPrime[i]) { primes[primesCount++] = i; leastPrime[i] = primesCount; } for (int j = 0; j < leastPrime[i]; ++j) { int t = primes[j] * i; if (t <= n) leastPrime[t] = j + 1; else break; } } return primesCount; } int main() { int n; scanf("%d", &n); printf("%d\n", advancedSieve(n)); return 0; }