林老师你好,我自己写了个哥德巴赫的猜想的程序,我感觉比对着你的程序没问题,但是为什么在poj上面测试出来始终是错的

#include<stdio.h>
#include<math.h>
int S(int a)
{
    int i;
    for (i = 2; i <sqrt(a)+1; i++)
    {
        if (a%i == 0)
            return 0;
    }
    return 1;
}
int main() //哥德巴赫的猜想
{
    int a;
    printf("please input a number");
    scanf("%d", &a);
    while (a)
    {
        int j, y, flagj, flagy;
        for (j = 3; j <=a / 2; j++)
        {
            flagj = S(j);
            if (flagj)
            {
                y = a - j;
                flagy = S(y);
                if (flagy)
                { 
                    printf("%d = %d + %d\n", a, j, y);
                    break;
                }
            }
        }
        scanf("%d", &a);
    }
    return 0;
}

林沐

赞同来自: fish

应该把这行"printf("please input a number");"去掉就可以啦。我使用你的代码提交测试了,可以AC!截图如下:  
image.png
  可能同学你不理解Online judge的运行评测原理。Online Judge在评判时是标准的输入输出,这就导致你打印的"please input a number"这个字符串使得OJ认为它是你的输出结果了,所以就会Wrong Answer。   下节课我也会讲一下OJ的使用原理的。加油! : )

fish - Hadooper

赞同来自:

具体是什么错误? 肉眼看程序,手动输入的a,按道理应该是偶数才能用于哥德巴赫猜想的计算?  

三七

赞同来自:

个人认为,是否这一点上也有问题?for (i = 2; i <sqrt(a)+1; i++)

要回复问题请先登录注册