- 计数质数
统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
通过次数54,824提交次数163,856
int countPrimes(int n){
int cnt = 0;
bool * isPrime = (bool *)malloc(n*sizeof(bool));
memset(isPrime, true, n*sizeof(bool));
for (int i=2; i*i<n; i++) {
if (isPrime[i]) {
for (int j=i*i; j<n; j+=i) {
isPrime[j] = false;
}
}
}
for (int i=2; i<n; i++) {
if (isPrime[i]) {
cnt++;
}
}
return cnt;
}
/*20ms,8.3MB*/
时间复杂度:O(NlogN)
空间复杂度:O(N)
bool isPrime (int n) {
for (int i=2; i<=sqrt(n); i++) {
if (n%i == 0) {
return false;
}
}
return true;
}
int countPrimes(int n){
int cnt = 0;
for (int i=2; i<n; i++){
if(isPrime(i)) {
cnt++;
}
}
return cnt;
}
/*超时*/
时间复杂度:O(N*N)
空间复杂度:O(1)