请统计出n以内所有的素数个数。
输入格式:
请给出最大整数以内的一个数字n。
输出格式:
输出n以内素数的个数。
输入样例:
在这里给出一组输入。例如:
1000
输出样例:
在这里给出相应的输出。例如:
168
参考代码
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 统计n以内的素数个数
int count_primes(int n) {
if (n <= 1) return 0;
// 创建一个布尔数组,用于标记每个数字是否为素数
bool *is_prime = (bool*)malloc((n + 1) * sizeof(bool));
for (int i = 2; i <= n; ++i) {
is_prime[i] = true; // 初始化所有数字为素数
}
// 使用埃拉托斯特尼筛选法,将合数标记为非素数
for (int i = 2; i * i <= n; ++i) {
if (is