请问我的程序出现了什么问题

要求判断素数,然后再验证大于7的奇数可以等于三个素数之和
但是我的代码输入15后输出的三个运行结果有一个是不对的
#include<stdio.h>
int IsPrime(int n)
{
int j;
for(j=2;j<=n;j++)
{
if( (j<n) && (n%j==0) )
{
return 0;
}
if(j==n)
{
return 1;
}
}
}

int main()
{
int x,i,j;
scanf("%d",&x);
int l;
int a,b,c;
int n=1+x/3;

if(x%2!=0)
{
    for(i=2;i<=n;i++)
    {
        l=x;
        if(IsPrime(i)==1)
        {
            a=i;
            l=l-i;
            for(j=i;j<l;j++)
            {
                if(IsPrime(j)==1)
                {
                    b=j;
                    l=l-j;
                    if(IsPrime(l)==1)
                    {
                        c=l;
                        printf("%d+%d+%d=%d\n",a,b,c,x);
                    }
                }
            }
        }
    }
}

return 0;

}

素数判断函数有问题,1 不是素数 , 另主函数中,变量 l 设置有问题,修改见注释处,供参考:

#include<stdio.h>
int IsPrime(int n)
{
    int j;
    if (n <= 1) return 0;   //修改
    for (j = 2; j <= n; j++)
    {
        if ((j < n) && (n % j == 0))
        {
            return 0;
        }
        if (j == n)
        {
            return 1;
        }
    }
}

int main()
{
    int x, i, j;
    scanf("%d", &x);
    int l, t;     //修改,增加一个中间变量 t
    int a, b, c;
    int n = 1 + x / 3;

    if (x % 2 != 0)
    {
        for (i = 2; i <= n; i++)
        {
            l = x;
            if (IsPrime(i) == 1)
            {
                a = i;
                l = l - i;
                for (j = i; j < l; j++)
                {
                    if (IsPrime(j) == 1)
                    {
                        b = j;
                        t = l - j;   //l = l - j; 修改
                        if (IsPrime(t) == 1) // IsPrime(l)==1 修改
                        {
                            c = t;  // c=l; 修改
                            printf("%d+%d+%d=%d\n", a, b, c, x);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

第二个for循环有问题

img

img