My code:
public class Solution {
public int countPrimes(int n) {
if (n <= 1)
return 0;
boolean[] isPrime = new boolean[n];
for (int i = 0; i < n; i++)
isPrime[i] = true;
for (int i = 2; i * i < n; i++) {
if (!isPrime[i])
continue;
for (int j = i * i; j < n; j += i) {
isPrime[j] = false;
}
}
int count = 0;
for (int i = 2; i < n; i++) {
if (isPrime[i])
count++;
}
return count;
}
}
這道題目雖然是easy堕澄,但是體現(xiàn)了不斷優(yōu)化的思想蛙紫。
首先途戒,基本思想是,是素?cái)?shù)刷喷斋。
然后,在刷的過程中星爪,又有兩個(gè)優(yōu)化。
一個(gè)是 pp + p, pp + 2p 的刷
一個(gè)是,結(jié)束條件是毡鉴, (p * p + i*p ) ^ 2 < n
具體看他的hint把。
Anyway, Good luck, Richardo!