题目描述
统计小于非负整数n的质数数量
浑水摸鱼之蛮力验证法
直接上代码
bool is_zen(int x) {
int i = 2;
while (i * i <= x) {
if (x % i == 0) {
return 0;
}
i++;
}
return 1;
}
int countPrimes(int n) {
int count = 0;
for (int i = 2; i < n; i++) {
if (is_zen(i)) {
count++;
}
}
return count;
}
相信这是很多初学者的做法,对于所有小于n的非负整数,直接暴力判断每个数是否为质数
值得一提的是,判断一个x是否为质数不需要送1遍历到x看是否能整除,只需要到即可,仔细想想大家都能明白
时间复杂度为,空间复杂度为O(1)。不消耗空间,也不是一点优势也没有。。。
基本操作之埃氏筛
所谓筛选法,就是筛去和数,留下质数的方法,是一种间接求解的方法
我们的基本想法是,对于任意一个和数,其一定为一个质数的若干倍,我们遍历所有小于n的数,如果该数为质数,就筛