首页 > 其他 > 详细

1099:第n小的质数

时间:2020-07-07 13:29:21      阅读:67      评论:0      收藏:0      [点我收藏+]

原题

题目

题目描述

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

输入格式

一个不超过\(10000\)的正整数\(n\)

输出格式

\(n\)小的质数。

输入样例

10

输出样例

29

思路

首先打一个判断素数的函数:

bool pd(int n)//布尔值
{
    if(n<2) return 0;//如果小于2,非质数
    for(int i=2;i*i<=n;++i) if(n%i==0) return 0;//如果除了1和n外还有别的因数,则是合数
    /*这里用了因数的成对性,只需找小因数即可*/
    return 1;//是质数
}

然后模拟

上完整代码

#include<bits/stdc++.h>
using namespace std;
bool pd(int n)
{
    if(n<2) return 0;
    for(int i=2;i*i<=n;++i) if(n%i==0) return 0;
    return 1;
}//判断素数
int main()
{
    int n,i=2,s=1;//定初值
    cin>>n;//读入n
    while(s!=n)
    {
        i++;//先加一下
        if(pd(i)) s++;//如果是质数,s加一
    }
    cout<<i;//输出第n个质数
    return 0;
}

1099:第n小的质数

原文:https://www.cnblogs.com/wuzhenyu/p/13260147.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!