题目
统计所有小于非负整数 n 的质数的数量。
思路
质数的百度解释:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
创建一个数组,长度为n,填充为1.
首先2是质数,从2开始,2的所有倍数都标记为0
然后计算下一个,3,将3的所有倍数都标记为0
重复上述步骤
最后统计数组中,从下标为2开始,统计 1 的数量即可
代码
class Solution {
public int countPrimes(int n) {
int[] isPrime = new int[n];
Arrays.fill(isPrime,1);
int ans = 0;
for (int i=2;i<n;i++){
if (isPrime[i]==1){
ans+=1;
int j=i;
int k=2;
while(j*k<n){
isPrime[j*k]=0;
k+=1;
}
}
}
return ans;
}
}