题目
统计所有小于非负整数 n 的质数的数量。
示例
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
C++代码
基本判断思路
在一般领域,对正整数n,如果用2到sqrt(n)之间的所有整数去除,均无法整除,则n为质数。质数大于等于2 不能被它本身和1以外的数整除
注意:题目中要求的是小于非负整数n的质数数量,不包括n
这样时间复杂度贼高。。。
class Solution {
public:
int countPrimes(int n)
{
int count=0;
int flag; //标志数是否为质数
for(int i=2;i<n;++i)
{
flag=1;
for(int j=2;j<=sqrt(i);++j)
{
if(i%j==0) //如果不为质数,置flag为0
{
flag=0;
break;
}
}
if(flag) count++; //如果为质数,计数+1
}
return count;
}
};