验证欧拉版哥德巴赫猜想。提交时一直有一个过不了,一问下是我有什么没考虑到 还是逻辑有问题

#include <iostream>
using namespace std;
int main()
{
    int n,flag=0,flag1=1;//flag判断有几对素数  flag1判断n-1是否符合条件




    cin>>n;
    for(int i=2;i<=(n-2);i++)
    {
    if((n-1)%i==0)//如果n-1不符合则标记flag1为0
    {
        flag1=0;
        break;
    }
    }
    if(flag1==1)//如果n-1符合则输出,并将计数自加
        {
             cout<<n<<"="<<1<<"+"<<n-1<<endl;
             flag++;
        }
    for(int i = 2;i <= n/2; i++)
    {
        int x1 = i,x2 = n-i;
        int flag2 = 1,flag3 = 1;//两个标记,分别对应x1、x2。若flag = 1,代表其表示的数字为素数
                                // 若flag= 0,代表其表示的数字不是素数
         /* 判断 x1 是否为质数 */
        for(int j = 2;j <=x1-1; j++)
        {
            if( x1 % j == 0)
            {
            flag1 = 0;
            break;
            }
        }
         /* 判断 x2 是否为质数 */
        for(int j = 2;j <=x2-1; j++)
        {
            if( x2 % j == 0)
            {
            flag2 = 0;
            break;
            }
        }
        if(flag2 == 1 && flag3 == 1 )//若x1、x2均为质数
        {
            cout<<n<<"="<<x1<<"+"<<x2<<endl;
            flag++;
        }
        }
    cout<<"there are "<<flag<<" solutions"<<endl;
    return 0;
}