c语言输出前n个自然数中的素数
时间: 2024-09-11 07:16:19 浏览: 141
在C语言中,输出前n个自然数中的素数可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)。这个算法通过创建一个数组并标记非素数,然后只输出未被标记的数字作为素数。以下是简单的步骤:
1. 初始化一个大小为n+1的布尔型数组isPrime[],所有元素初始化为true,表示默认所有的数字都是素数。
2. 遍历从2到√(n),对于每个数i,如果isPrime[i]为true,说明它是素数:
a. 将它的倍数设置为非素数:即更新isPrime[j * i] = false,其中j从1开始遍历,直到n / i。
3. 输出所有isPrime[]为true的索引,它们对应的值就是自然数中的素数。
下面是一个简单的C代码示例:
```c
#include <stdio.h>
#define MAX 100
void printPrimes(int n) {
int isPrime[MAX + 1];
for (int i = 0; i <= MAX; i++) {
isPrime[i] = 1;
}
// Start with the first prime number
int p = 2;
while (p * p <= n) {
if (isPrime[p]) {
for (int i = p * p; i <= n; i += p)
isPrime[i] = 0; // Mark multiples as non-prime
}
p++;
}
printf("First %d prime numbers are:\n", n);
for (int p = 2; p <= n; p++)
if (isPrime[p])
printf("%d ", p);
}
int main() {
int n;
printf("Enter the value of n: ");
scanf("%d", &n);
printPrimes(n);
return 0;
}
```
阅读全文