第 n 小的质数

第 n 小的质数

GESP二级练习,多层循环分支嵌套练习,难度★✮☆☆☆。

luogu-B2085 第 n 小的质数

题目要求

题目描述

输入一个正整数 nn,求正整数范围中第 nn 小的质数。

输入格式

一个不超过 3000030000 的正整数 nn

输出格式

nn 小的质数。

样例输入 #1

10

样例输出 #1

29

题目分析

首先,我们需要一个变量来存储输入的正整数 nn,表示我们要找的第 nn 小的质数。 然后,我们从2开始,依次判断每个数是否为质数,直到找到第 nn 个质数为止。

判断一个数是否为质数,可以通过检查它是否有除1和自身以外的因数来实现。

  • 如果一个数有除1和自身以外的因数,那么它就不是质数。
  • 如果一个数没有除1和自身以外的因数,那么它就是质数。
  • 最后,我们输出找到的第 nn 个质数。

{% include custom/custom-post-content-inner.html %}

示例代码

#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;
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on