1099:第n小的質數


原題

題目

題目描述

輸入一個正整數\(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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM