【GESP】C++二级练习 luogu-B2085, 第 n 小的质数
GESP二级练习,多层循环分支嵌套练习,难度★✮☆☆☆。
luogu-B2085 第 n 小的质数
题目要求
题目描述
输入一个正整数 $n$,求正整数范围中第 $n$ 小的质数。
输入格式
一个不超过 $30000$ 的正整数 $n$。
输出格式
第 $n$ 小的质数。
样例输入 #1
1
10
样例输出 #1
1
29
题目分析
首先,我们需要一个变量来存储输入的正整数 $n$,表示我们要找的第 $n$ 小的质数。 然后,我们从2开始,依次判断每个数是否为质数,直到找到第 $n$ 个质数为止。
判断一个数是否为质数,可以通过检查它是否有除1和自身以外的因数来实现。
- 如果一个数有除1和自身以外的因数,那么它就不是质数。
- 如果一个数没有除1和自身以外的因数,那么它就是质数。
- 最后,我们输出找到的第 $n$ 个质数。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n; // 输入的正整数
cin >> n; // 读取输入的正整数
for (int i = 2;; i++) { // 从2开始,循环直到找到第n个质数
bool flag = true; // 初始化标志为真,表示i可能是质数
if (i == 2) {
flag = true; // 2是质数
} else {
for (int j = 2; j <= sqrt(i); j++) { // 检查i是否有除1和自身以外的因数
if (i % j == 0) {
flag = false; // 如果i有除1和自身以外的因数,则不是质数
break; // 跳出循环
}
}
}
if (flag) { // 如果i是质数
n--; // 计数减1
if (n == 0) { // 如果计数为0,则i是第n个质数
cout << i; // 输出第n个质数
break; // 跳出循环
}
}
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权