打算做一个验证哥德巴赫猜想的程序(输入一个偶数,输出这个偶数可以由哪两个素数的和表示)在内层循环中存在问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果#include<stdio.h>

int main()
{
int b,c,d,e;
scanf("%d",&b);
for(c=3;c<b;c+=2)
{
for(d=3;d<=(b-c);d+=2)
{
for(e=2;e<c;e++)
{
if (c%d==0) break;
}
if (e>c-3)
{
if (d%e==0) break;
if (e>d-2)
{
if (b==c+d)
printf("%d=%d+%d\n",b,c,d);
}
}
}
}
}
输入20时,出现20=11+9;同理输入26,出现26=17+9;在第二个位置上会出现非素数“9"

供参考:

#include <stdio.h>
int  isPrime(int n)
{
    int i;
    if (n <= 3)  return n > 1;
    for (i = 2; i * i <= n; i++)
        if (n % i == 0) return 0;
    return 1;
}
int main()
{
    int i, n;
    while (scanf("%d", &n) == 1 && n > 0) // 输入 <= 0 时,结束输入
    {
        for (i = 2; i <= n / 2; i++) {
            if (isPrime(i) && isPrime(n - i))
            {
                printf("%-d=%-d+%-d\n", n, i, n - i);//输出
                break;
            }
        }
    }
    return 0;
}