[2016-04-21][HDU][2161][Primes]

[2016-04-21][HDU][2161][Primes]

  • 时间:2016-04-21 15:46:12 星期四

  • 题目编号:[2016-04-21][HDU][2161][Primes]

  • 题目大意:问第n个数字是否是素数,

  • 分析:n的范围只有1E6,直接筛一遍

  • 遇到的问题:这里定义 1和 2 都不是素数

  1. #include<cstdio>
  2. #include<cstring>
  3. using namespace std;
  4. const int maxn = 2 * 1E4;
  5. int isnpri[maxn];
  6. void getPri(){
  7. memset(isnpri,0,sizeof(isnpri));
  8. for(int i = 2 ; i < maxn ; ++i){
  9. if(isnpri[i]) continue;
  10. for(int j = i * 2;j < maxn ; j += i){
  11. isnpri[j] = 1;
  12. }
  13. }
  14. isnpri[1] = isnpri[2] = 1;
  15. }
  16. int main(){
  17. getPri();
  18. int n,cntcase = 0;
  19. while(~scanf("%d",&n) && n > 0){
  20. printf("%d: ",++cntcase);
  21. puts(isnpri[n]?"no":"yes");
  22. }
  23. return 0;
  24. }


来自为知笔记(Wiz)


posted on 2016-04-21 15:48  红洋  阅读(153)  评论(0)    收藏  举报

导航