You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
619 B

2 years ago
package class32;
public class Problem_0204_CountPrimes {
public static int countPrimes(int n) {
if (n < 3) {
return 0;
}
// j已经不是素数了f[j] = true;
boolean[] f = new boolean[n];
int count = n / 2; // 所有偶数都不要,还剩几个数
// 跳过了1、2 3、5、7、
for (int i = 3; i * i < n; i += 2) {
if (f[i]) {
continue;
}
// 3 -> 3 * 3 = 9 3 * 5 = 15 3 * 7 = 21
// 7 -> 7 * 7 = 49 7 * 9 = 63
// 13 -> 13 * 13 13 * 15
for (int j = i * i; j < n; j += 2 * i) {
if (!f[j]) {
--count;
f[j] = true;
}
}
}
return count;
}
}