Sicily1561——Prime

来源:互联网 发布:什么是数据猿 编辑:程序博客网 时间:2024/06/06 01:10

1561. PRIME

限制条件

时间限制: 1 秒, 内存限制: 32 兆

题目描述

A prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. The first prime number is 2. Can you write a program that computes the nth prime number, given a number n <= 10000?

输入格式

The input contains just one number which is the number n as described above.
The maximum value of n is 10000.

输出格式

The output consists of a single line with an integer that is the nth prime number.

样例输入

30

样例输出

113
这题考察快速求素数的方法,一个比较好用的方法就是筛法求素数。
操作也很简单,就是我们找到一个数是质数后,那么它的任何倍数肯定都是合数,我们把这些倍数全部删掉就可以了。

具体ac代码如下:

#include <iostream>#include <cstdio>#include <algorithm>#include <iomanip>#include <map>#include <vector>#include <cmath>#include <string>#include <set>#include <sstream>#include <cstdlib>#define N 1000001using namespace std;void solve(int n){if(n == 1) {printf("2\n");return;} bool prime[N];for(int i = 2; i < N; i++){if(i%2) prime[i] = true;else prime[i] = false;}for(int i = 3; i <= sqrt(N); i++){if(prime[i]) for(int j = i + i; j < N; j += i)prime[j] = false;}int cnt = 1;for(int i = 0; i < N; i++){if(prime[i]){cnt++;if(cnt == n)printf("%d\n",i);}}}int main(){int n;cin >> n;solve(n);return 0;} 


0 0