/*
思路:建立一个数组 用于标记数否是质数;
从2 开始 一直到n 把每个数的自己的倍数在数组里面标记成true;
由于初始值都是false 每一次的操作都会把不是质数的数标记成true;所以false表示素数;
设置一个count 每次找到一个素数就加一 一直到遍历完得到的结果就是数量;
*/
class Solution {
public int countPrimes(int n) {
if(n < 2) return 0;
//Set<Integer> hash = new HashSet<>();
boolean[] isP = new boolean[n];
int count = 0;
for(int i = 2; i < n; i++) {
if(isP[i] == false) {
count++;
for(int j = i * 2; j < n; j += i) {
//hash.add(j);
isP[j] = true;
}
}
}
return count;
}
}