#include <stdio.h>
#include <stdlib.h>
int main()
{
int k,a,b,count1,count2,i;
scanf("%d",&k);
for (a=3;a<=k/2;a++)
{
count1=0;
for (i=2;i<a;i++)
{
if (a%i==0)
{
count1++;
break;
}
}
if (count1==0)
{
count2=0;
b=k-a;
for (i=2;i<b;i++)
if (b%i==0)
{
count2++;
break;
}
}
printf("%d=%d+%d\n",k,a,b);
}
return 0;
}
我想验证哥德巴赫猜想,为什么会得到10=4+7的错误答案
修改如下,改动处见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int k,a,b,count1,count2,i;
scanf("%d",&k);
for (a=3;a<=k/2;a++)
{
count1=0;
for (i=2;i<a;i++)
{
if (a%i==0)
{
count1++;
break;
}
}
if (count1==0)
{
count2=0;
b=k-a;
for (i=2;i<b;i++)
if (b%i==0)
{
count2++;
break;
}
if (count2 == 0) // 修改
printf("%d=%d+%d\n",k,a,b);
}
//printf("%d=%d+%d\n",k,a,b); 修改
}
return 0;
}
因为当a==4的时候后面的if (count1==0)下面的语句根本没有执行,所以b的值保持不变,然后a的每一个值你的程序都会输出一次,就会出现10=4+7的情况试一下更改输出的条件,比如说当count1==0以及count2==0的时候才输出结果试试
【相关推荐】