写个题,编译没有问题,运行的时候就只会打印部分需要打印的数值,怎么改进啊,求指导





修改如下:
#include <stdio.h>
#include <math.h>
int main(void){
int L,i,j=2,n=0,s=0;
int flag=1;
scanf("%d",&L);
while(s<L){
i=2;
flag=1;
while(i<=sqrt(j)){
if(j%i==0){
flag=0;
break; // 如果j可以被i整除,则j不是素数,break退出循环
}else{
i=i+1;
// flag=1; // 这里素数标志不能置1,否则可能会导致判断素数出错
}
}
if(flag==1){ // 这里flag=1改为flag==1
s=s+j;
if(s>L){ // 当累加当然质数后,如果和s大于口袋的负载量L,则需要从s中减去这个新增加的质数,并break退出循环
s=s-j;
break;
}else{ // 如果新增加质数后,和s没有超过口袋负载量L,则打印当前质数,并且质数数量+1
printf("%d\n",j);
n=n+1;
}
}
j=j+1;
}
printf("%d",n); // 因为计算的n,没有包括超出负载量的质数,所以这里直接打印n即可
return 0;
}
