[GESP202306 二级] 找素数
时间: 2024-12-26 11:20:55 浏览: 6
### GESP202306 二级 C++ 素数题目及解法
#### 题目描述
给定一个正整数 n (1 ≤ n ≤ 1,000),判断该数是否为素数。如果 n 是素数,则输出 "Yes";如果不是,则输出 "No"[^1]。
#### 解题思路
要解决这个问题,可以采用试除法来检测一个数是否为素数。具体来说:
- 如果 n 小于等于 1,则不是素数。
- 对于大于 1 的自然数 n,如果除了 1 和它本身外还有其他因数,则这个数就不是一个质数。
- 只需检查从 2 到 sqrt(n) 是否有能被 n 整除的因子即可[^2]。
#### 实现代码
以下是具体的实现方式:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int num) {
if (num <= 1) return false;
int limit = sqrt(num);
for (int i = 2; i <= limit; ++i) {
if (num % i == 0) return false;
}
return true;
}
int main() {
int n;
cin >> n;
cout << (isPrime(n) ? "Yes" : "No") << endl;
return 0;
}
```
此段代码实现了输入一个整数并判断其是否为素数的功能。`isPrime()` 函数用于验证传入参数 `num` 是否满足素数条件,并返回相应的布尔值。在主函数中读取用户输入的数据后调用 `isPrime()` 进行判定,并打印最终的结果。
阅读全文