如何用C语言打印1到100之间的素数?
时间: 2024-09-23 20:15:36 浏览: 37
在C语言中,我们可以采用一种常见的算法——埃拉托斯特尼筛法(Sieve of Eratosthenes),来找出1到100之间的所有素数。以下是基本的步骤:
1. 创建一个大小为101的布尔数组isPrime,用于标记每个数字是否为素数。初始时假设所有数字都是素数(即isPrime[i] = true)。
2. 从2开始,遍历到100,对每一个素数i,将它的倍数(i * i 到 100)设置为合数(isPrime[j] = false)。因为除了1之外,一个合数必定可以分解为两个因数,其中一个肯定小于等于i。
3. 遍历结束后,数组isPrime中仍然为true的元素就是素数。我们只需要遍历isPrime并打印出索引对应的值即可。
下面是一个简单的C程序实现:
```c
#include <stdio.h>
#include <stdbool.h>
#define LIMIT 100
void printPrimes() {
bool isPrime[LIMIT + 1];
for (int i = 0; i <= LIMIT; i++) {
isPrime[i] = true;
}
isPrime[0] = isPrime[1] = false;
for (int i = 2; i * i <= LIMIT; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= LIMIT; j += i) {
isPrime[j] = false;
}
}
}
printf("素数列表:\n");
for (int i = 2; i <= LIMIT; i++) {
if (isPrime[i])
printf("%d ", i);
}
}
int main() {
printPrimes();
return 0;
}
```
阅读全文