坑爹大质数

1530 大质数

 

 时间限制: 1 s
 空间限制: 1000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 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 }
View Code
原文地址:https://www.cnblogs.com/mimiorz/p/6500754.html