验证哥德巴赫猜想(好难啊,感觉自己写的有点啰嗦,求大神指点!!!)

【问题描述】编写程序验证哥德巴赫猜想: 一个不小于6的偶数可以表示为两个素数之和,如6=3+3, 8=3+5, 10=3+7,…
要求:
(1)子函数prime函数,prime函数的作用是判别一个数是否为素数,返回一个整数(0表示非素数,1表示素数)
(2)子函数gotbaha函数,调用prime函数,输出该数的所有素数和对
(3)在主函数中输入一个不小于6的偶数n,然后调用函数gotbaha。
样例输入:
104
样例输出:
104=3+101
104=7+97
104=31+73
104=37+67
104=43+61
测试输入:
18
测试输出:
18=5+13
18=7+11
测试输入:
22
测试输出:
22=3+19
22=5+17
22=11+11
#include <iostream>
#include <cmath>
using namespace std;
int main() {
	void godbaha(int);
	int n;
	cin>>n;
	godbaha(n);
	return 0;
}

void godbaha(int n) {
	int prime(int );
	int a=n;
	int j=0;
	int c=0;
	for(j=2; j<=a/2; j++) {
		c=a-j;
		if(prime(c)==0)
			continue;
		if(prime(c)==1) {
			if(prime(j)==1) {
				cout<<a<<"="<<j<<"+"<<c;
				cout<<endl;
			}
		}
	}
}

int prime(int m) {
	int q=m;
	int i=0;
	for(i=2; i<=sqrt(q); i++) {
		if(q%i==0) {
			return 0;
			break;
		} else
			continue;
	}
	if((i<=sqrt(q)+1)&&(i>=(sqrt(q)-1)))
		return 1;
	return 0;
}


posted @ 2017-10-28 11:47  Comet_Fei  阅读(179)  评论(0编辑  收藏  举报