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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}