1.什么是哥德巴赫猜想
任意一个≥6的偶数,都可以表示为两个奇质数之和
任意一个≥9的奇数,都可以表示为三个奇质数之和
输入一个整数,将它表示成奇质数和的形式输出
例如:8=3+5;13=3+3+7,13=3+5+5;
相关代码如下
#include<iostream>
#include<cmath>
using namespace std;
int i;
bool shushu(int n)
{
if(n<=1) return 0;//1不是质数返回0
if(n==2) return 1;//2是质数
for(i=2;i<n;i++)
{
if(n%i==0) return 0;
else if (n!=i+1) continue;
else return 1;
}
} //判断质数的函数
int main()
{
int a,b,c,m1,m2,d;
cout<<"请输入要验证的偶数(该数>=6):";
cin>>a;
if (a%2==1)
{
cout<<"输入错误";
return 0;
}
if (a<6)
{
cout<<"输入错误";
return 0;//输入的数<6时结束该程序
}
else
{
for (b=2;b<=a/2;b++)//把这个数分为两部分
{
c=a-b;
m1=shushu(b);
if(m1)//b是质数
{
m2=shushu(c);
if(m2)//c是质数
{
cout<<a<<"="<<b<<"+"<<c<<" ";
d++;
if (d%4==0)
cout<<endl;//每4个换行
}
}
}
}
cout<<"哥德巴赫猜想正确";
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
int i;
bool shushu(int n)
{
if(n<=1) return 0;
if(n==2) return 1;
for(i=2;i<n;i++)
{
if(n%i==0) return 0;
else if (n!=i+1) continue;
else return 1;
}
} //同上题
int main()
{
int a,b,c,d,m1,m2,m3,e,f;
cout<<"请输入要验证的奇数(该数>=9):";
cin>>a;
if (a%2==0)
{
cout<<"输入错误";
return 0;
}
if (a<9)
{
cout<<"输入错误";
return 0;//输入的数<9时结束该程序
}
else
{
for (b=3;b<=a;b++) //先找出3-b的质数
{
m1=shushu(b); //如果是质数赋值给m1
if(m1)//如果b为质数执行以下程序
{
c=a-b;//大于3的质数必然为奇数,所以C为偶数转换为问题(1)
for (e=2;e<=c/2;e++)//把这个数分为两部分
{
f=c-e;
if(b<=e)//保证b为最小值,以免重复
{
m3=shushu(e);
if(m3)//b是质数
{
m2=shushu(f);
if(m2)//c是质数
{
cout<<a<<"="<<b<<"+"<<e<<"+"<<f<<" ";
d++;
if (d%4==0)
cout<<endl;//每4个换行
}
}
}
}
}
}
}
cout<<"哥德巴赫猜想正确";
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
int i;
bool shushu(int n)
{
if(n<=1) return 0;
if(n==2) return 1;
for(i=2;i<n;i++)
{
if(n%i==0) return 0;
else if (n!=i+1) continue;
else return 1;
}
}
int main()
{
int a,b,c,d,m1,m2,m3,e,f;
cout<<"请输入要验证的数(该数>=6):";
cin>>a;
if (a<6)
{
cout<<"输入错误";
return 0;
}
if (a%2==1)
{
for (b=3;b<=a;b++)
{
m1=shushu(b);
if(m1)
{
c=a-b;
for (e=2;e<=c/2;e++)//把这个数分为两部分
{
f=c-e;
if(b<=e)
{
m3=shushu(e);
if(m3)//b是质数
{
m2=shushu(f);
if(m2)//c是质数
{
cout<<a<<"="<<b<<"+"<<e<<"+"<<f<<" ";
d++;
if (d%4==0)
cout<<endl;//每4个换行
}
}
}
}
}
}
}
else if(a%2==0)
{
for (b=2;b<=a/2;b++)//把这个数分为两部分
{
c=a-b;
m1=shushu(b);
if(m1)//b是质数
{
m2=shushu(c);
if(m2)//c是质数
{
cout<<a<<"="<<b<<"+"<<c<<" ";
d++;
if (d%4==0)
cout<<endl;//每4个换行
}
}
}
}
return 0;
}