帮我写一个c语言程序输入正整数N,判断N是否为素数,如果是则输出prime,否则输出not prime。
时间: 2023-04-05 16:03:06 浏览: 76
好的,我可以回答这个问题。以下是一个判断正整数N是否为素数的C语言程序:
```
#include <stdio.h>
int main() {
int n, i, flag = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
for (i = 2; i <= n / 2; ++i) {
if (n % i == 0) {
flag = 1;
break;
}
}
if (n == 1) {
printf("not prime");
}
else {
if (flag == 0)
printf("prime");
else
printf("not prime");
}
return 0;
}
```
当输入一个正整数N时,程序会判断N是否为素数,如果是则输出"prime",否则输出"not prime"。
相关问题
c语言:题目描述 对于正整数N(N<231),如果N只能被1和N整除,则N为素数(质数)。 输入 输入正整数N(N<231)。 输出 判断N是否为素数,如果是则输出prime,否则输出not prime。
以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(unsigned int n) {
if (n == 1) {
return false;
}
for (unsigned int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
unsigned int n;
scanf("%u", &n);
if (is_prime(n)) {
printf("prime\n");
} else {
printf("not prime\n");
}
return 0;
}
```
首先定义一个函数 `is_prime` 来判断一个正整数是否是素数。若传入的数 `n` 等于 1,则直接返回 false;否则从 2 到 $\sqrt{n}$ 进行遍历,若发现能够整除则返回 false,否则返回 true。
在主函数中读入正整数 `n`,调用 `is_prime` 函数判断 `n` 是否是素数,并输出结果。
注意,由于输入的数可能较大,需要使用无符号整型(unsigned int)来存储。
c语言 输入一个正整数n,如果n不是质数,则输出-1,否则从2开始递增,输出第n个质数
好的,这是一个比较常见的算法题。我可以给你提供一个 C 语言的代码示例:
```c
#include <stdio.h>
int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n;
scanf("%d", &n);
int count = 0;
int i = 2;
while (count < n) {
if (is_prime(i)) {
count++;
if (count == n) {
printf("%d\n", i);
return 0;
}
}
i++;
}
printf("-1\n");
return 0;
}
```
其中 `is_prime` 函数用于判断一个数是否为质数,如果是则返回 1,否则返回 0。主函数中,我们先读入一个正整数 `n`,然后依次判断从 2 开始的每一个数是否为质数,如果是则将计数器 `count` 加一,当 `count` 等于 `n` 时就输出这个数并结束程序,如果遍历完了所有可能的数还没有找到第 `n` 个质数,则输出 -1。