线性筛
#includeusing namespace std; const int N = 1000010; int primes[N]; bool st[N]; int n, cnt; void get_primes(int x) { for(int i = 2; i <= n; i++) { if(!st[i]) primes[cnt++] = i; for(int j = 0; primes[j] <= n / i; j++) { st[primes[j] * i] = true; if(i % primes[j] == 0) break; } } } int main() { cin >> n; get_primes(n); cout << cnt << endl; return 0; }