下面这个问题,我写的代码错在哪里?
写一个函数验证哥德巴赫猜想:一个不小于6的偶数可以表示成两个素数之和,如6=3+3,8=3+5,10=3+7……在主函数中输入一个不小于6的偶数n然后调用函数gotbaha,在gotbaha函数中在调用prime函数,prime函数作用是判断一个数是否是素数,在gotbaha函数中一下形式的结果:34=3+31
下面是我写的,但是运行成功后,我输入数据就出错了,问题错在哪里?求高人指点
#include<iostream>
#include<cmath>
using namespace std;
int prime(int x)
{
int i,m,temp;
m=(int)sqrt((double)x);
for(i=2;i<m+1;i++)
if(x%i==0) temp=1;
else temp=0;
return temp;
}
void gotbaha(int n)
{
int i,j,a,b;
for(i=3;i<=n/2;i=i+2)
{
a=prime(i);
j=a-i;
b=prime(j);
if(a==1&&b==1)
cout <<n<<"="<<i<<"+"<<j<<endl;
}
}
int main()
{
int z;
cin >>z;
gotbaha(z);
return 0;
}