如何判断一个正整数为素数?编程实现厄拉托塞师筛法,可求出10000以内的全部素数。
时间: 2024-09-21 07:13:38 浏览: 80
判断一个正整数n是否为素数,可以采用试除法。即从2到√n(取整)遍历每个数,看n能否被这些数整除。如果都不能整除,那么n就是素数。这里需要注意的是,大于√n的因子都不需要再检查了,因为它们必然有一个小于√n的配对因子。
下面是一个使用C语言实现的厄拉托塞师筛法(也叫埃拉托斯特尼筛法)来找出10000以内的所有素数:
```c
#include <stdio.h>
#include <math.h>
#define LIMIT 10000
int main() {
int primes[LIMIT+1]; // 初始化一个足够大的数组存储素数
bool is_prime[LIMIT+1];
// 全部初始化为素数
for (int i = 0; i <= LIMIT; i++) {
is_prime[i] = true;
}
// 2是唯一的偶数素数
is_prime[0] = is_prime[1] = false;
// 筛选素数
for (int i = 2; i <= sqrt(LIMIT); i++) {
if (is_prime[i]) {
for (int j = i * i; j <= LIMIT; j += i) {
is_prime[j] = false;
}
}
}
// 输出素数
printf("10000以内的素数有:\n");
for (int i = 0; i <= LIMIT; i++) {
if (is_prime[i]) {
printf("%d ", i);
}
}
return 0;
}
```
这段代码的工作原理是先假设所有的数都是素数(除了0和1)。然后从2开始,逐个检查每个数,如果它是个素数,就把它的所有倍数都标记为合数。最终,那些未被标记的数就是素数。
阅读全文