「已注销」 2018-11-26 14:51 采纳率: 100%
浏览 461
已采纳

新人求解为何输出如此奇怪?

验证哥德巴赫猜想,输入任一大于二的偶数,输出两素数。

 #include <stdio.h>
int main()
{
    int m,a,b=0,c=0,d,e,n,i,j;
    scanf("%d",&m);
    for(i=3;i<m;i=i+2)
    {
        for(j=2;j<i;j++)
        {
            if(i%j==0)
            {
                b=1;
                break;/*判断i是否为素数*/
            }
        }
            e=i;
            d=n-e;
        for(j=2;j<m/2;j++)
        {
            if(d%j==0)
            {
                c=1;
                break;/*判断d是否为素数*/
            }
        }
        if(b==0&&c==0&&e!=d)
        {
            if(d>m/2)
            {
                printf("%d %d\n",e,d);/*输出数据从小到大排序,多种情况换行*/
            }
        }
        b=0;c=0;
    }
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 「已注销」 2018-11-27 14:05
    关注

    以下是改好的程序,结合了上面两位大神的回答

     #include <stdio.h>
    int main()
    {
        int m,b=0,c=0,d,e,i,j;
        scanf("%d",&m);
        for(i=3;i<m;i=i+2)
        {
            for(j=2;j<i;j++)
            {
                if(i%j==0)
                {
                    b=1;
                    break;
                }
            }
                e=i;
                d=m-e;
            for(j=2;j<d/2;j++)
            {
                if(d%j==0)
                {
                    c=1;
                    break;
                }
            }
            if(b==0&&c==0&&e!=d)
            {
                if(d>m/2)
                {
                    printf("%d %d\n",e,d);
                }
            }
            b=0;c=0;
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?