欧拉筛就能做,复杂度:O(n)
#include <bits/stdc++.h>
using namespace std;
const int N=1e8+1;
int ans,n;
bool vis[N];
int isprime(int x) {
vis[1]=true;
for(int i=2; i<=n; i++) {
if(!vis[i]) {
ans++;
for(int j=2; j*i<=n; j++) {
vis[j*i]=true;
}
}
}
return ans;
}
int main() {
cin>>n;
cout<<isprime(n);
return 0;
}
这题还挺简单的
数据达到1e8也能AC