哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:即任一大于2的偶数都可写成两个素数之和。请根据输入的偶数n,将其分解为2个质数a和b的和,其中a<=b,且要求a要尽量的小。
C++代码
在主函数中调用输出a,b的out()函数,在out函数中再调用判断a,b为质数的prime()函数
#include<iostream>
using namespace std;
bool prime(int h){
for(int i = 2;i*i<=h;i++){//只需要枚举到sqrt(a)
if(h%i==0){//如果发现了因数(质数除1和本身外没有因数)
return false;
}
}//如果没有return就表明没找到因数
return true;
}
void out(int n)
{
for(int a = 2;a<=n;a++)
{//从2开始暴枚第一个加数
if(prime(a)==true and prime(n-a)==true)
{//如果两个加数都是质数
cout<<n<<"="<<a<<"+"<<n-a<<endl;//输出
break;
}
}
}
int main()
{
int n;
cin>>n;
out(n);
/*for(int i = 4;i<=n;i=i+2){//枚举偶数
out(i);
}
*/枚举偶数
}