c语言,编程,这个题,我想知道我哪里错了

2025-05-15 06:28:32
推荐回答(1个)
回答1:

你的判断素数的函数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;//这里加一句

}

运行结果