c语言实现输出n位质数
时间: 2024-02-16 11:04:28 浏览: 21
以下是一个简单的C语言程序,用于输出前n个质数:
```c
#include <stdio.h>
int is_prime(int n) {
if (n < 2) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n, count = 0, i = 2;
printf("请输入需要输出的质数个数:");
scanf("%d", &n);
while (count < n) {
if (is_prime(i)) {
printf("%d ", i);
count++;
}
i++;
}
return 0;
}
```
这个程序中,is_prime函数用于判断一个数是否为质数,主函数中的循环用于输出前n个质数。
相关问题
c语言实现输出n位质数,要求利用筛选法,输入n,输出n位质数
以下是一个使用筛选法实现输出前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个质数。
c语言输出所有三位素数
下面是一个C语言程序,可以输出所有三位素数:
```
#include <stdio.h>
int main() {
int a = 100, b, c, d, n = 1, i = 1;
loop:
for (a; a <= 999; a++) {
for (b = a - 1; b >= 2; b--) {
if (a % b == 0) {
a++;
goto loop;
} else {
if (b == 2 && a % 2 != 0) {
printf("%d ", a);
}
}
}
}
return 0;
}
```
该程序使用了两层循环,外层循环让a从100加到999,内层循环让b从a-1递减到2,判断a是否能被b整除,如果能则跳过当前循环,如果不能则判断b是否等于2且a是否为奇数,如果是则输出a。需要注意的是,程序中的goto语句应该避免使用,但在这个程序中为了方便跳过当前循环,使用了goto语句。