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

【问题描述】写一个函数验证哥德巴赫猜想: 一个不小于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,则输出
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值