c++使用函数的调用来实现从键盘输入一个偶数写成两个素数之和

问题:编程实现从键盘输入的一个偶数写成两个素数之和。如从键盘输入32,则输出为:32=3+29、32=13+19.
请问我想用函数的调用来解决这个问题,但是为什么没有成功?

#include 
using namespace std;
int fun(int x,int a)
{     int i=0;
for(x=0;xfor (i = 2; i < x; i++)   //试除法,能不能被x整除,从2开始找,直到等于x
        {
            if (x % i == 0)   //找到能被i整除的数了
            {
                break;
            }
        }
        if (x == i)   //找到和x相等也没有被整除的,证明是质数
        {
            cout<return x;//求素数 
}
int main(int a)
{
    int b=0;
    int c=0;
    cout<<"请输入一个偶数:";
    cin>>a;
    if((fun(b,a)+fun(c,a))==a)
    cout<"="<<fun(b,a)<<"+"<<fun(c,a);
    else cout<<"error"<return 0;}

会了会了,我强大智慧的舍友帮助我写出了这个代码!!!


#include <iostream>
using namespace std;
int fun(int n)
{
    int i;
    for(i=2;i<n;i++)
    {
        if(n%i==0)return 0;
        return 1;
    }
}
int main()
{
    int b,a;
    cout<<"请输入一个偶数:";
    cin>>a;
    for(int b=2;b<a;b++)
    {
        if (fun(b)) 
        {
            if (fun(a-b))
            {
                cout<<a<<"="<<b<<"+"<<a-b<<'\n';
            
            }
        }
    }
    return 0;
}

这个代码错误比较多

  1. fun这个函数x参数完全没必要传
  2. 然后fun这个函数永远返回的是a,因为循环x等于a才退出

可以这么实现下函数
fun函数判断一个数是否是素数,如果是返回true else false,然后主循环里面这样循环下
for( i = 2; i <= a/2; i++)
if (fun(i) && fun(a-i)) {找到,打印 i和a-i;break}