第n小的质数

Description

输入一个正整数n,求第n小的质数。

Input

一个不超过10000的正整数n。

Output

第n小的质数。

Sample Input

10

Sample Output

29

python解法

import math

# 输入一个整数n
n = int(input("请输入一个整数n: "))

# 初始化计数器和当前检查的数字
count = 0
num = 2

# 无限循环,直到找到第n个质数
while True:
    is_prime = True  # 标记当前数字是否为质数
    
    # 检查从2到num的平方根的所有整数是否能整除num
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            is_prime = False  # 如果能整除,则不是质数
            break  # 跳出循环
    
    # 如果num是质数,则增加计数器
    if is_prime:
        count += 1
    
    # 如果已经找到了n个质数,则输出第n个质数并退出循环
    if count == n:
        print(num)
        break
    
    # 否则,检查下一个数字是否是质数
    num += 1

c++解法

#include<bits/stdc++.h> 
using namespace std;

int main() {
    int n, count = 0;  // 定义两个整型变量n和count,n用于存储用户输入的数字,count用于计数找到的质数个数
    cin >> n;  // 从标准输入读取一个整数赋值给n

    for (int i = 2; ; i++) {  // 从2开始,无限循环,直到找到第n个质数
        bool flag = true;  // 定义一个布尔变量flag,初始化为true,用于标记当前的数是否为质数

        for (int j = 2; j <= sqrt(i); j++) {  // 遍历从2到i的平方根的所有整数
            if (i % j == 0) {  // 如果i能被j整除,说明i不是质数
                flag = false;  // 将flag设置为false
                break;  // 跳出内层循环
            }
        }

        if (flag == true) {  // 如果flag为true,说明i是质数
            count++;  // 质数计数加1
        }

        if (count == n) {  // 如果已经找到了n个质数
            cout << i << endl;  // 输出第n个质数
            return 0;  // 程序结束
        }
    }

    return 0;  // 实际上这一行永远不会被执行到,因为前面的循环是无限循环
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
THE END