1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <iostream> #include <cstring> using namespace std;
const int N = 1e6 + 10; int primes[N]; bool mystate[N];
int cntPrime(int n) { int cnt = 0; for (int i = 2; i <= n; ++i) { if (!mystate[i]) primes[++cnt] = i; for (int j = 1; primes[j] <= n / i; ++j) { mystate[primes[j] * i] = true; if (i % primes[j] == 0) break; } } return cnt; }
int main() { int n; cin >> n; memset(mystate, false, sizeof(mystate)); memset(primes, 0, sizeof(primes)); printf("%d", cntPrime(n)); return 0; }
|