一、题目
Description:
Count the number of prime numbers less than a non-negative number, n.
二、代码
class Solution {
public:
int countPrimes(int n) {
int count=0;
if (n<=2)
return 0;
if (n<=3)
return 1;
if (n<=5)
return 2;
vector <int> primes;
primes.push_back(3);
for (int i=5;i<n;i+=2){
bool is_prime=true;
for (int j=0;j<primes.size();j++)
{
if (primes[j]>pow(i,0.5))
break;
if (i%primes[j]==0){
is_prime=false;
break;
}
}
if (is_prime){
count++;
primes.push_back(i);
}
}
return count+2;
}
};
三、思路
不需从1到n的平方根本身,只需要判断已有的素数能否被n整除即可。用一个向量储存以判断出的素数,但此方法被提示在999983时超时。