埃拉托斯特尼筛选法(Sieve of Eratosthenes)是一种用于查找一定范围内所有素数的算法。下面是在C语言中使用埃拉托斯特尼筛选法初始化大位数组的示例代码:
#include
#include
#include
void sieveOfEratosthenes(int n) {
bool *prime = (bool *)malloc((n+1) * sizeof(bool));
for(int i = 0; i <= n; i++) {
prime[i] = true; // 初始化大位数组,假设所有数字都是素数
}
for(int p = 2; p * p <= n; p++) {
if(prime[p] == true) {
for(int i = p * p; i <= n; i += p) { // 将p的倍数标记为非素数
prime[i] = false;
}
}
}
printf("素数列表:\n");
for(int p = 2; p <= n; p++) {
if(prime[p]) {
printf("%d ", p); // 输出素数
}
}
free(prime);
}
int main() {
int n = 30; // 初始化大位数组的范围
sieveOfEratosthenes(n);
return 0;
}
这段代码中,我们首先动态分配了一个布尔型数组prime
,用于标记每个数字是否为素数。然后,我们将数组中的所有元素初始化为true
,表示所有数字都是素数。接下来,我们使用埃拉托斯特尼筛选法标记非素数。最后,我们输出数组中值为true
的索引,即素数。
以上示例将输出范围内的所有素数。你可以根据需要修改代码来适应其他需求,比如将素数保存到另一个数组中,或者判断一个特定的数字是否为素数。
下一篇:埃拉托斯特尼素数