文章

13

粉丝

386

获赞

30

访问

67.8k

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

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

 

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<vector>
  5. using namespace std;
  6. const int N = 1e5 + 10;
  7. bool arr[N];
  8. vector<int> v;
  9. void Initial(){
  10. memset(arr, true, sizeof(arr));
  11. arr[0] = arr[1] = false;
  12. for(int i = 0;i < N; i++){
  13. if(arr[i]){
  14. v.push_back(i);
  15. if(i > N / i) continue;
  16. for(int j = i * i; j < N; j += i) arr[j] = false;
  17. }
  18. }
  19. }
  20. int main(){
  21. int k;
  22. Initial();
  23. while(scanf("%d", &k) != EOF){
  24. printf("%d\n", v[k - 1]);
  25. }
  26. return 0;
  27. }

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发