4.7 写一个函数验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和,如6=3+3,8=3+5,10=3+7···在主函数中输入一个不小于6的偶数n,然后调用函数gobaha函数中再调用prime函数,prime函数的作用是判别一个数是否为素数。在gobaha函数中输出以下形式的结果:34=3+31。
答案:1不是素数,排除。2是素数。所以要排除1. 且i<=j比较重要,否则会出现8=3+5与8=5+3重复的现象。
#include <iostream>
using namespace std;
int main()
{
int gotbaha(int);
int prime(int);
int n;
cout<<"please enter num:";
cin>>n;
if (n % 2 == 0 && n >= 6)
{
gotbaha(n);
}
else
{
cout << "Please enter an even integer that is not less than 6!" << endl;
}
return 0;
}
int gotbaha(int n)
{
int i,j;
int prime(int);
for(i=2;i<n;i++)
{
for(j=2;j<n;j++)
if(i+j==n&&prime(i)&&prime(j)&&i<=j)
cout<<n<<"="<<i<<"+"<<j<<endl;
}
return 0;
}
int prime(int x)
{
int i,flag=1;
for(i=2;i<x/2+1;i++)
{
if(x%i==0)
flag=0;
}
return flag;
}
加了i<=j时
答案:
未加i<=j时:显然有重复