对于暴力统计其实我们没有必要去判断每一个数字的。
某个范围内由素数以及非素数,每个数都有自己的因子。两个素数相乘肯定是一个和数,非素数。所以,我们可以对一个和素不进行判断。
进行优化下,减少计算次数。
class Solution {
public int eratosthenes(int n) {
boolean[] isPrime = new boolean[n];
int count = 0;
for(int i = 2; i < n; i++) {
if(!isPrime[i]) {
count++;
for(int j = 2*i; j < n; j+=i) { // 优化: for(int j = i*i; j < n; j+=i)
isPrime[j] = true;
}
}
}
return count;
}
}