当前位置:   article > 正文

codeforces T-primes 230 B 素数题解_codeforces t素数

codeforces t素数

题目连接:http://codeforces.com/problemset/problem/230/B

本题其实是简单的找规律问题,规律一看就明白了。

这个就是需要总结问题的思维能力。同时需要注意可能的溢出问题。

规律总结错了,溢出问题又错了,结果就不能一次性AC了。

注意:静态内存和全局内存,即栈内存,比动态内存,即堆内存,要大;动态分配一个百万的bool数组也会程序崩溃的。


  1. #include <stdio.h>
  2. #include <vector>
  3. #include <string.h>
  4. #include <algorithm>
  5. #include <iostream>
  6. #include <string>
  7. #include <limits.h>
  8. #include <stack>
  9. #include <queue>
  10. #include <set>
  11. #include <map>
  12. #include <math.h>
  13. using namespace std;
  14. const int MAX_N = (int)1E5+1;
  15. const int MAX_M = 1000001;
  16. bool primes[MAX_M];
  17. void getPrimes()
  18. {
  19. memset(primes, 0, sizeof(bool)*MAX_M);
  20. primes[0] = primes[1] = 1;
  21. for (int i = 2; i < MAX_M; i++)
  22. {
  23. if (!primes[i])
  24. {
  25. for (int j = i<<1; j < MAX_M; j+=i)
  26. {
  27. primes[j] = true;
  28. }
  29. }
  30. }
  31. }
  32. int main()
  33. {
  34. getPrimes();
  35. int n;
  36. long long num;
  37. while (scanf("%d", &n) != EOF)
  38. {
  39. for (int i = 0; i < n; i++)
  40. {
  41. scanf("%I64d", &num);
  42. long long t = (long long) sqrt((double)num);
  43. if (t * t == num && !primes[t]) puts("YES");
  44. else puts("NO");
  45. }
  46. }
  47. return 0;
  48. }



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/75167
推荐阅读
相关标签
  

闽ICP备14008679号