第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; // 实际上这一行永远不会被执行到,因为前面的循环是无限循环
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
作者:小鱼
链接:https://www.52stu.com/?p=190
文章版权归作者所有,未经允许请勿转载。
链接:https://www.52stu.com/?p=190
文章版权归作者所有,未经允许请勿转载。
THE END