原題
題目
題目描述
輸入一個正整數\(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;
}