题目描述:
Count the number of prime numbers less than a non-negative number, n.
Example:
Input: 10
Output: 4
Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.
计算1~n范围内的质数,要保证查找的是质数,那么就要排除不是质数的数,所以每次发现一个质数就让它乘以其他数,从而排除以它为因数的其他数,因此还需要利用哈希表或者数组存储每个数的访问情况。
class Solution {
public:
int countPrimes(int n) {
vector<int> v(n,0);
int count=0;
for(int i=2;i<n;i++)
{
if(v[i]==0)
{
count++;
v[i]=1;
for(int j=2;i*j<n;j++) v[i*j]=1;
}
}
return count;
}
};