c语言实现输出n位质数,要求利用筛选法,输入n,输出n位质数
时间: 2024-02-16 08:04:31 浏览: 73
以下是一个使用筛选法实现输出前n个质数的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n;
printf("请输入需要输出的质数个数:");
scanf("%d", &n);
int *prime = (int*)malloc(sizeof(int) * n); // 用于存储质数的数组
memset(prime, 0, sizeof(int) * n); // 初始化数组
int count = 0; // 当前找到的质数个数
int i = 2; // 当前正在检查的数
while (count < n) {
if (prime[i] == 0) { // 如果当前数是质数
prime[count] = i; // 把当前数存入质数数组
count++; // 质数个数加一
for (int j = i; j < n; j += i) { // 把当前数的倍数标记为非质数
prime[j] = 1;
}
}
i++;
}
printf("前%d个质数为:\n", n);
for (int i = 0; i < n; i++) { // 输出质数数组
printf("%d ", prime[i]);
}
free(prime); // 释放内存
return 0;
}
```
这个程序中,使用一个数组来存储质数,初始值为0,如果一个数是质数,则把它的倍数标记为1,表示非质数。最后输出数组中前n个非0元素,即前n个质数。
阅读全文