找出1000到10000之间的所有素数,C语言
时间: 2024-11-03 19:14:49 浏览: 31
在C语言中,找出1000到10000之间的所有素数可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)。这是一种简单而高效的算法,通过标记非素数来找到素数。以下是实现这一算法的基本步骤:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义最大查找范围
#define LIMIT 10000
bool is_prime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
void find_primes() {
// 创建一个布尔数组表示每个数字是否为素数
bool prime[LIMIT+1] = {true};
prime[0] = prime[1] = false;
for (int i = 2; i * i <= LIMIT; i++) {
// 如果i是素数,则将它的倍数标记为非素数
if (prime[i]) {
for (int j = i * i; j <= LIMIT; j += i)
prime[j] = false;
}
}
// 输出素数
for (int i = 2; i <= LIMIT; i++)
if (prime[i])
printf("%d ", i);
}
int main() {
find_primes();
return 0;
}
```
在这个程序中,`is_prime()`函数用于检查一个数是否是素数,`find_primes()`函数则遍历并标记1000到10000之间的素数。`main()`函数调用`find_primes()`来打印结果。
阅读全文