为什么我运行出来的结果是0,请问是哪里出错了?
求一个区间内的素数和
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 不然它一直是零