哥德巴赫猜想——偶数(>6)表示为素数和
【问题】写一个函数验证哥德巴赫猜想: 一个不小于6的偶数可以表示为两个素数之和,如6=3+3, 8=3+5, 10=3+7,…。
【样例说明】如16既可以表示为素数3和素数13的和,也可以表示为素数5和素数11的和:16=3+13、16=5+11
【示例代码】
#include<iostream>
#include<cmath>
using namespace std;
int Goldbach(int);
int main()
{
int number;
cin>>number;
Goldbach(number);
return 0;
}
int Goldbach(int m)
{
int prime(int);
int i,a=0,b,t;
t=m/2;
for(i=2;i<=t;i++)
{
if(prime(i)==1)
{a=i;
b=m-a;
if(prime(b)==1)
cout<<m<<'='<<a<<'+'<<b<<endl;}
}
return 0;
}
int prime(int x)//判别素数
{
int i,y,k=sqrt(x);
if(x==1) {y=0;}
else if(x==2||x==3) {y=1;}
else for(i=2;i<=k;i++)
{
if(x%i==0)
{y=0;break;}
else y=1;
}
return y;
}
如有更优方法或代码存在错误,欢迎各位大佬提出!与君同行,共同进步!