用筛法求之N内的素数。c语言
时间: 2024-11-20 20:37:41 浏览: 35
用C语言思想改写的用筛法求质数程序.rar_筛法 质数
在C语言中,可以使用筛法(也称为埃拉托斯特尼筛法)来找出小于或等于给定整数N的素数。这里有一个简单的实现示例[^1]:
```c
#include <stdio.h>
int main() {
int n;
bool prime[1000]; // 假设N <= 1000
// 初始化所有数为素数
for (int i = 0; i < 1000; i++) {
prime[i] = true;
}
// 从2开始,因为1不是素数
for (int i = 2; i * i <= n; i++) {
// 如果prime[i]为true,说明i是素数
if (prime[i]) {
// 把i的倍数标记为非素数
for (int j = i * i; j <= n; j += i) {
prime[j] = false;
}
}
}
// 打印出小于等于N的素数
for (int i = 2; i <= n; i++) {
if (prime[i]) {
printf("%d\n", i);
}
}
return 0;
}
```
这段代码的工作原理是从2开始,如果当前数字`i`是素数(即`prime[i]`为`true`),则会把`i`的所有倍数(`j = i * k`,其中k从2开始)标记为非素数。这个过程一直持续到`i`的平方大于`n`为止,因为之后的倍数已经在之前的迭代中处理过了。
阅读全文