C语言【问题描述】 输入一个正整数,判断是否为素数。 【输入形式】 一个正整数 【输出形式】 Yes/No 【样例输入】 3 【样例输出】 Yes
时间: 2024-11-13 18:21:30 浏览: 68
输入一个正整数,判断是不是素数(C++)
C语言中可以编写一个函数来判断一个正整数是否为素数。首先,我们定义一个正整数n作为输入,然后从2开始遍历到n的平方根(因为大于这个数的所有因子都必然有一个小于等于它的平方根),如果n能被其中任何一个数整除,那么它就不是素数,否则它是素数。
下面是一个简单的C程序示例:
```c
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool isPrime(int n) {
if (n <= 1) { // 0和1不是素数
return false;
}
if (n == 2 || n == 3) { // 2和3是特例,素数
return true;
}
if (n % 2 == 0) { // 偶数除了2以外都不是素数
return false;
}
for (int i = 3; i <= sqrt(n); i += 2) { // 只检查奇数因子
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int num;
printf("Enter a positive integer: ");
scanf("%d", &num);
if (isPrime(num)) {
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
```
**相关问题--**
1. C语言如何避免计算超过n的平方根?
2. 这段代码为什么对偶数做特殊处理,直接返回false?
3. 如果要优化这个算法,你有哪些建议?
阅读全文