计算素数个数的算法有很多种,不同的算法效率也不同。但是目前最快的算法之一是埃拉托斯特尼筛法(Sieve of Eratosthenes),它可以在O(nloglogn)的时间复杂度内计算出n以内的所有素数。
以下是一个用C语言实现埃拉托斯特尼筛法的代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int count_primes(int n) {
if (n < 2) {
return 0;
}
bool *is_prime = (bool *) mall