#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的时候。如果循环的边界没有确定好,那么就会出现段错误,但是不是数组溢出,而是死循环导致的。