为什么我运行出来的结果是0

为什么我运行出来的结果是0,请问是哪里出错了?
求一个区间内的素数和

img

img


int a,b,n,i,sum,flag;
sum = 0;
scanf("%d %d",&a, &b);
for(n=a;n<b;n++){
  for(i=2;i<n;i++){
    if(n%i!=0){
      flag = 0;
    }else{
      flag = 1;
      break;
    }
  }
  if(flag==0){
    sum+=n;
  }
}
printf("%d-%d之间的素数和是:%d。\n",a,b,sum);

你这段代码逻辑上有点问题,素数是除了1和它本身之外没有别的除数,那么当flag=0时代表的是n%i不等于0,也就是i不是n的除数,i是从2到n-1的,所以如果flag一直等于0,代表n是个素数,那么flag就等于0,如果有一个n%i等于0了,那么flag也应该就等于1了,而当flag等于1时,直接跳出循环,并且不进入下面的if语句,因为这时n不是个素数,我把逻辑改了一下,没运行,你试试看吧
另外如果有帮助的话,帮忙点个采纳

第一个for下面写flag=1

没有重置信号 判断完一个数 将flag重新赋值为1 不然它一直是零