c语言洛谷P1304 哥德巴赫猜想 ,看下哪里错了

帮忙看下我这程序哪里错了

题目描述
输入一个偶数 N(N<=10000)N(N<=10000),验证4~N所有偶数是否符合哥德巴赫猜想:任一大于 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5 是错误答案。

输入格式
第一行N

输出格式
4=2+2 6=3+3 …… N=x+y

输入输出样例
输入 #1复制
10
输出 #1复制
4=2+2
6=3+3
8=3+5
10=3+7


#include<stdio.h>
#include<math.h>
int z(int i){
    for(int o=2;o<=floor(sqrt(i+0.5));o++){
        i%o==0;
        return 0;
    } 
    return 1;
}
int main(){
    int m;
    scanf("%d",&m);
    for(int i=2;i<=m;i++){
        if(z(i)==1&&z(m-i)==1&&i<(m-i))
        printf("m=%d+%d\n",i,m-i);
        
    }
    return 0;
    
}

1.判断是否是质数的时候,应该是if(o%i==0) return 0;
2.你只执行了一次,题目要求输出2-N的所有偶数。

代码已修改,运行结果如下,如有帮助,请帮忙采纳一下,谢谢。

img

代码修改如下:


#include<stdio.h>

#include<stdio.h>
#include<math.h>
int z(int i){
    for(int o=2;o<=floor(sqrt(i+0.5));o++){
        if(i%o==0)  //修改1:这里加if
        return 0;
    } 
    return 1;
}
int main()
{
    int m,j;
    scanf("%d",&m);
    for(int i=2;i<=m;i+=2)
    {
        for(j=2;j<i;j++)
        {
            if(z(j)==1&&z(i-j)==1&&j<=(i-j))
            {
                printf("%d=%d+%d\n",i,j,i-j);  //注意这里
                break;
            }
        }
        
    }
    return 0;
}