【问题描述】写一个函数验证哥德巴赫猜想: 一个不小于6的偶数可以表示为两个素数之和,如6=3+3, 8=3+5, 10=3+7,…。
【输入形式】从键盘输入一个数,该数不超过10000。
【输出形式】输出这个数表示为两个素数之和的所有可能。
【样例输入】16 【样例输出】
16=3+13
16=5+11
【样例说明】16既可以表示为素数3和素数13的和,也可以表示为素数5和素数11的和。
参考主程序:
int main()
{
int number;
cin >> number;
Goldbach(number);
return 0; }
#include<iostream> using namespace std; int main() //主函数 { void Goldbach(int x); int number; cin>>number; Goldbach(number); return 0; } int sushu(int x) //定义素数的判断函数 { int num=0; //定义num计数 if(x==1) //当值为1时num加一 { num++; } else //当值大于等于2时 { for(int i=2;i<x;i++) //值为2时不进行for循环,num为0不变 { //值大于2时进行循环 if(x%i==0) num+=1; //从2开始除,若余数为0,则计数加一 } } if(num==0) num=x; //若计数为0,表示无因数,将x的值赋给num else num=0; //余数不为0,表示有因数,将0赋给num return num; //返回num,若为0表示不为素数,否则num即为此素数值 } void Goldbach(int x) { int a,b; //定义a,b表示可能的加法情况 for(int i=2;i<=x/2;i++) { a=sushu(i); //进行素数判断 b=sushu(x-i); if(a!=0&&b!=0) cout<<x<<"="<<a<<"+"<<b<<endl; //若均不为0,则输出 } }