题目描述:
Description:
Count the number of prime numbers less than a non-negative number, n.
解题思路:
使用见埃拉托色尼筛法。
一个数的n倍一定是合数
代码:
class Solution {
public int countPrimes(int n) {
//这里正好判断小于n的素数的个数
//生成一个n(0-n-1)的数组即可
// 默认所有的元素值都会设置为false
if(n<=1)
return 0;
boolean[] flag = new boolean[n];
flag[0] = true;
flag[1] = true;
for(int i=2;i*i<n;i++){
//合数的倍数还是合数,将所有的合数都做标记
if(!flag[i]){
for(int j=2;i*j<n;j++){
flag[i*j]=true;
}
}
}
int count=0;
for(int k=2;k<n;k++){
if(!flag[k])
count++;
}
return count;
}
}