埃拉托色尼筛法的代码
时间: 2024-09-30 13:00:53 浏览: 42
埃拉托斯特尼筛法(Sieve of Eratosthenes)是一种用于找出所有小于给定整数n内的质数的经典算法。下面是使用C语言实现的一个简单版本:
```c
#include <stdio.h>
void sieve_of_eratosthenes(int n) {
// 创建一个布尔数组, 其中索引表示数字, 值表示是否为素数
int primes[n+1];
for (int i = 0; i <= n; i++) {
primes[i] = 1;
}
// 从2开始, 因为只有2才是最小的质数
for (int p = 2; p * p <= n; p++) {
// 如果p是素数
if (primes[p]) {
// 将p的倍数标记为合数
for (int i = p * p; i <= n; i += p) {
primes[i] = 0;
}
}
}
// 输出所有的素数
for (int p = 2; p <= n; p++) {
if (primes[p]) {
printf("%d ", p);
}
}
}
int main() {
int num_primes;
printf("Enter the number up to which you want to find prime numbers: ");
scanf("%d", &num_primes);
sieve_of_eratosthenes(num_primes);
return 0;
}
```
在这个程序中,我们首先创建了一个布尔数组`primes`,初始时假设所有数字都是质数。然后遍历每个数字`p`,如果它是素数(即`primes[p]`为1),我们就把它的所有倍数标记为非素数。最后,只保留那些仍然被标记为素数的位置。
运行这个程序时,用户会被要求输入一个数值,程序将输出所有小于或等于该值的质数。
阅读全文