PAT.Basic level.T.1013.数素数

来源:互联网 发布:wwwtaoyitu淘宝号查询 编辑:程序博客网 时间:2024/06/06 12:00
#include<stdio.h>#include<math.h>main(){  int z,i,prime[10001]={0};  int  m,n,temp1,temp2,temp3;  temp2=1;  scanf("%d %d",&m,&n);  prime[1]=2;  i=3;  temp1=0;  while(1){    for(z=2;z<=sqrt(i);z++){      if(i%z==0){        temp1=1;        break;      }    }    if(temp1==0){      temp2++;      prime[temp2]=i;    }    if(temp2>=n){      break;    }    i++;    temp1=0;  }  temp3=1;    for(i=m;i<n;i++){     if(temp3!=10){  printf("%d ",prime[i]);  temp3++;  }else{      printf("%d\n",prime[i]);    temp3=1;  }    }  if(n>=m)  printf("%d",prime[i]);  return 0;}

这里不用筛数法一样可以过,但是,但是,但是,注意边界条件!
如果我输入两个一样的值呢?
PS。最后一个测试点是测试m和n同时为1的时候。如果循环的边界没有确定好,那么就会出现段错误,但是不是数组溢出,而是死循环导致的。

0 0
原创粉丝点击