用C语言验证哥德巴赫猜想并将结果打印


#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的时候才输出结果试试

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^