哥德巴赫猜想,表示素数之和

mac2025-07-17  15

【问题描述】写一个函数验证哥德巴赫猜想: 一个不小于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,则输出 } }
最新回复(0)