class Solution {
public:
int countPrimes(int n) {
if(n<3) return 0;
vector<bool> nums(n,true);
for(int i=2; i*i<n; i++){ // i*i<n减少循环次数
if(nums[i]){
for(int j=i*i ;j<n; j=j+i){ //从i*i开始,避免之前已经遇到过的数
nums[j]=false;
}
}
}
int cnt=0;
for(int i=2; i<n; i++){
if(nums[i]) cnt++;
}
return cnt;
}
};