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

#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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值