用c语言输入一个正整数,判断并输出其是否为素数。
时间: 2023-06-24 17:08:18 浏览: 73
以下是一个判断正整数是否为素数的C语言程序:
```c
#include <stdio.h>
int main() {
int n, i, is_prime = 1;
printf("请输入一个正整数:");
scanf("%d", &n);
if (n <= 1) {
is_prime = 0;
} else {
for (i = 2; i * i <= n; i++) {
if (n % i == 0) {
is_prime = 0;
break;
}
}
}
if (is_prime) {
printf("%d是素数\n", n);
} else {
printf("%d不是素数\n", n);
}
return 0;
}
```
程序首先读取用户输入的正整数n,然后判断它是否小于等于1,如果是,则直接判断为非素数。如果n大于1,则从2开始循环到n的平方根,如果在这个范围内找到了n的因子,则n不是素数,否则n是素数。
相关问题
用c语言输入一个正整数,判断它是否为素数。
可以使用以下的算法来判断一个正整数是否为素数:
1. 如果该数小于等于1,则不是素数。
2. 如果该数是2或3,则是素数。
3. 如果该数能够被2整除,则不是素数。
4. 如果该数能够被3整除,则不是素数。
5. 对于大于3的数,如果它能够被2或3整除,则一定不是素数。因此,我们可以从5开始,每次判断该数是否能够被6k+1或6k-1整除(其中k为正整数)。
以下是使用C语言实现判断一个正整数是否为素数的代码:
```c
#include <stdio.h>
int main() {
int num, i;
printf("请输入一个正整数:");
scanf("%d", &num);
if (num <= 1) {
printf("%d不是素数。\n", num);
return 0;
}
if (num == 2 || num == 3) {
printf("%d是素数。\n", num);
return 0;
}
if (num % 2 == 0 || num % 3 == 0) {
printf("%d不是素数。\n", num);
return 0;
}
for (i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) {
printf("%d不是素数。\n", num);
return 0;
}
}
printf("%d是素数。\n", num);
return 0;
}
```
在本代码中,我们首先通过`scanf`函数输入一个正整数,然后按照上述算法进行判断。如果该数小于等于1,则不是素数;如果该数是2或3,则是素数;如果该数能够被2或3整除,则不是素数;对于大于3的数,我们从5开始,每次判断该数是否能够被6k+1或6k-1整除(其中k为正整数)。如果该数不能被上述数整除,则是素数。
c语言编写一个main函数,输入一个正整数n并判断其是否为素数
下面是一个示例的 `main` 函数,可以输入一个正整数 `n`,并判断它是否为素数:
```
#include <stdio.h>
#include <stdbool.h>
int main(void) {
int n;
printf("请输入一个正整数: ");
scanf("%d", &n);
// 如果 n 为 2 或 3,则直接输出是素数
if (n == 2 || n == 3) {
printf("%d 是素数\n", n);
return 0;
}
// 如果 n 为 1 或小于 1,则直接输出不是素数
if (n <= 1) {
printf("%d 不是素数\n", n);
return 0;
}
// 如果 n 为偶数,则直接输出不是素数
if (n % 2 == 0) {
printf("%d 不是素数\n", n);
return 0;
}
// 尝试用 3 到 sqrt(n) 之间的奇数来除 n
// 如果能够被整除,则 n 不是素数
bool is_prime = true;
for (int i = 3; i * i <= n; i += 2) {
if (n % i == 0) {
is_prime = false;
break;
}
}
if (is_prime) {
printf("%d 是素数\n", n);
} else {
printf("%d 不是素数\n", n);
}
return 0;
}
```
注意:这仅仅是一个简单的示例,并不能保证效率最优。