埃筛法:原理是从2开始,将各个质数的倍数标记,例如:找出n以内的质数,从2开始,2是质数,留下;将2的倍数标记,剔除;再用下一个质数3,3留下,3的倍数标记剔除,如此循环往复,最终留下的就是质数。
java代码如下
class Solution {
public int countPrimes(int n) {
boolean[] arr = new boolean[n];
int count=0;
for(int i=2; i<n; i++){
if(arr[i]){
continue;
}
count++;
for(int j=i; j<n; j+=i){
arr[j]=true;
}
}
return count;
}
}