你的判断素数的函数int su(int m)有问题,没有判断m为1时return 0;,而且当m%i!=0时,就return 1;是不对的,因为比如9%2!=0而9%3==0,所以9不是素数,要等i从2判断到m/2,m%i都不等于0,才能说明m为素数return 1;
你的验证歌德巴赫猜想的C语言程序,我帮你改完了,你看看吧.(改动的地方见注释)
#include
int su(int m);
int main(){
int i,a1,a2,count;
count=0;
for(i=6;i<=100;i=i+2){
for(a1=1;a1<=i/2;a1++){
a2=i-a1;
if(su(a1)&&su(a2)){
printf(" %d=%d+%d ",i,a1,a2);
count++;
if(count%5==0) printf("\n");
}
}
}
return 0;
}
int su(int m){
int i;
if(m==1) return 0;//这里加一句
for(i=2;i<=m/2;i++){
if(m%i==0) return 0;
//else return 1;//这里去掉这句
}
return 1;//这里加一句
}
运行结果