题目描述:
统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
方法1:
主要思路:
(1)对每个数字判断是否是质数;
(2)大于2的偶数肯定不是质数;
class Solution {
public:
bool is_prime(int n){
int end=sqrt(n);
for(int i=3;i<=end;++i){
if(n%i==0){
return false;
}
}
return true;
}
int countPrimes(int n) {
//处理特殊的情形
if(n<=2){
return 0;
}
if(n==3){
return 1;
}
int count=1;
//跳过偶数
for(int i=3;i<n;i+=2){
if(is_prime(i)){//判断当前数字是否是质数
++count;
}
}
return count;
}
};