求0-a之内的素数个数用c语言
时间: 2023-05-20 14:04:03 浏览: 109
可以使用埃氏筛法来求解0-a之内的素数个数,具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int countPrimes(int n) {
bool *isPrime = (bool*)malloc(sizeof(bool) * n);
int count = 0;
for (int i = 2; 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;
}
}
for (int i = 2; i < n; i++) {
if (isPrime[i]) count++;
}
free(isPrime);
return count;
}
int main() {
int a = 100;
int count = countPrimes(a);
printf("0-%d之间的素数个数为:%d\n", a, count);
return 0;
}
```
这段代码使用了一个布尔数组isPrime来记录每个数是否为素数,初始时将所有数都标记为素数,然后从2开始遍历数组,如果当前数是素数,则将它的倍数都标记为非素数,最后统计素数的个数即可。
阅读全文