请问我这样写有什么问题要怎么改才对

任务描述
输入两个大于6的正偶数a和b(a

[科普] 哥德巴赫猜想是数论中存在最久的未解问题之一。这个猜想最早出现在1742年普鲁士人克里斯蒂安•哥德巴赫与瑞士数学家莱昂哈德•欧拉的通信中。用现代的数学语言,哥德巴赫猜想可以表述为:“任何一个充分大的偶数(>6)都可以表示成两个奇素数的和的形式”。

输入样例:
10 16
输出样例:
10=3+7
12=5+7
14=3+11
16=3+13

#include
#include
int f(int a,int b)
{
    for(int i=a;i<=b;i++)
        {
        for(int j=0;j<=sqrt(i);j++){
            if(j%i==0)
                return 0;
        }
        return 1;
        }
}
int main()
{
    int a,b;
   scanf("%d%d",&a,&b);
    for(int j=a;j<=b;j++){
    for(int i=3;i<=j/2;i++)
    {
        if(f(j)==1&&f(j-i)==1&&i!=j-i)
            printf("%d=%d+%d\n",j,i,j-i);
    }
    }
    
}

函数f需要两个参数,你f(j) 只给它传一个参数?而且直接下面这样看着更清爽:

#include<stdio.h>
#include<math.h>


int main()
{
    int a,b;
    scanf("%d%d",&a,&b);

    for(int j=a;j<=b;j+=2)
    {
        for(int i=3;i<a;i+=2)
        {
            int sub=j-i;

            if(sub %2 !=0)
            {
                if(sub % i==0)
                    continue;
                printf("%d=%d+%d\n",j,i,sub);
                break;
            }
        }
    }

    return 0;
}

f需要两个参数,你只传一个能对吗
你现在思路完全混乱,既然main里已经循环了,f里还从a到b循环是要干啥


#include<stdio.h>
#include<math.h>
int main(void)
{
    int n,z,i,j,k;
    scanf("%d",&n);
    //n=24;
    for( i=2;i<=n;i++)
    {
        int flag=0,p=0;
        for( j=2;j<=sqrt(i);j++)// 这里需要注意,判断一个数是否是素数的循环变量初始值为 2  ,根据素数的定义也可以得出初始值不能为1 
        {                       //如果此时  j  的初始值为 1 ,这个for循环将是一个无效代码段 
            if(i%j==0)    
            {flag=1;break;}
        }  
        if(flag==0)
        {
            z=n-i;
            for(k=2;k<=sqrt(z);k++)
            {
                if(z%k==0)
                {p=1;break;}
            }
        }
        if(flag==0&&p==0)break;
    }
    printf("%d = %d + %d",n,i,z);
    return 0;
}