I wrote the following code:
class Solution {
public:
int countPrimes(int n) {
if (n==0 || n==1)
return 0;
int counter=n-2;
vector<bool> res(n,true);
for (int i=2;i<=sqrt(n)+1;++i)
{
if (res[i]==false)
continue;
for (int j=i*i;j<n;j+=i)
{
if (res[j]==true)
{
--counter;
res[j]=false;
}
}
}
return counter;
}
};
but couldn't find its complexity, the inner loop according to my calculations runs n/2 + n/3 + ... + n/sqrt(n)