题目描述 Description
小明因为没做作业而被数学老师罚站,之后数学老师要他回家把第n个质数找出来。(1<=n<=100000)
老师随机写了几个数,交给了小明。小明百度找了很久,都没能解决。现在交给聪明的你。请你帮忙!
————————————————————————————————————————————
简单描述:把第n个质数找出来。
输入描述 Input Description
一个正整数n。
(1<=n<=100000)
输出描述 Output Description
第n个质数。
(第1个质数为2,第2个质数为3。)
样例输入 Sample Input
样例1
2
样例2
65
样例3
20133
样例输出 Sample Output
样例1
3
样例2
313
样例3
226381
数据范围及提示 Data Size & Hint
有大数据等着你,小心超时,不许交表哦。
(1<=n<=100000)
这是一种奇葩的方法,把质数存起来,在求质数时就容易多了。
代码:
1 #include<cmath> 2 #include<algorithm> 3 #include<iostream> 4 using namespace std; 5 long a[100000]={2}; 6 bool pd(int l){ 7 for(int i=0;a[i]<=sqrt(l);i++) 8 if(l%a[i]==0)return false; 9 return true; 10 } 11 int main(){ 12 long long n,p=0,i=2;cin>>n; 13 while(p<n) 14 { 15 if(pd(i)){a[p]=i;p++;} 16 i++; 17 }--i; 18 cout<<i<<endl; 19 return 0; 20 }