文章

13

粉丝

386

获赞

2

访问

62.4k

头像
Prime Number
P1289 上海交通大学机试题
发布于2022年3月5日 12:57
阅读数 4.5k

先预处理找到差不多10000个素数,大概就是1e5以内可以找到,然后直接输出即可

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>

using namespace std;

const int N = 1e5 + 10;
bool arr[N];

vector<int> v;

void Initial(){
    memset(arr, true, sizeof(arr));
    arr[0] = arr[1] = false;
    for(int i = 0;i < N; i++){
        if(arr[i]){
            v.push_back(i);
			if(i > N / i) continue;
            for(int j = i * i; j < N; j += i) arr[j] = false;
        }
    }
}

int main(){
    int k;
    Initial();
    while(scanf("%d", &k) != EOF){
        printf("%d\n", v[k - 1]);
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发