牛客_Prime Number

本題是一道常規題,但有一點麻煩的是,要求前10000個素數,第10000個素數是104729,很容易超時

題目描述

Output the k-th prime number.

輸入描述:

k≤10000

輸出描述:

The k-th prime number.

示例1

輸入

3
7

輸出

5
17
#include <iostream>
#define Max 110001
using namespace std;
int prime[10001];
int primeSize=0;
bool mark[Max]={false};
void init(){
    for(int i=2;i<Max;i++){
        if(mark[i]) continue;
        prime[primeSize++]=i;
        if(primeSize>10000) break;
        for(long long j=2*i;j<Max;j+=i)//關鍵點在此,如果用i*i,則會超時;此外 j要用longlong
            mark[j]=true;
    }
}

int main()
{
    init();
    int k;
    while(cin>>k) cout<<prime[k-1]<<endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章