用筛选发求100之内的素数
时间: 2025-01-02 19:46:55 浏览: 4
当然,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找出100以内的所有素数。这个算法的基本思想是从2开始,每次找到一个素数就将其所有的倍数标记为合数,直到达到给定的最大值。
以下是一个简单的C语言实现:
```c
#include <stdio.h>
// 辨别是否为素数的辅助函数
int is_prime(int num) {
if (num <= 1)
return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
// 筛选素数
void sieve_of_eratosthenes(int limit) {
// 初始化布尔数组,初始状态下所有数字都是可能的素数
int primes[limit + 1] = {0};
for (int i = 2; i * i <= limit; i++) {
if (!primes[i]) {
// 如果i是素数,那么它的所有倍数都不是素数
for (int j = i * i; j <= limit; j += i)
primes[j] = 1;
}
}
// 打印100以内的素数
printf("Prime numbers less than or equal to 100 are:\n");
for (int i = 2; i <= limit; i++)
if (!primes[i])
printf("%d ", i);
printf("\n");
}
int main() {
sieve_of_eratosthenes(100);
return 0;
}
```
当你运行这段代码时,它会输出100以内的所有素数。如果你有其他关于这个算法的问题或者需要进一步的解释,请随时告诉我。
阅读全文