谭浩强C++课后习题11——验证哥德巴赫猜想

谭浩强C++课后习题11——验证哥德巴赫猜想

题目描述:编写一个函数验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和,如6=3+3,8=3+5,10=3+7…在主函数中输入一个不小于6的偶数n,然后调用函数gotbaha,在gotbaha函数中再调用prime函数,prime函数的作用是判断一个数是否为素数。在gotbaha函数中输出以下形式的结果:34=3+31。

算法思路:先找到第一个小于num的素数first,另一个令其为last等于num-first,判断如果last也是素数则满足哥德巴赫猜想,将first和last输出,循环至num/2避免重复输出同样的算术式。

#include<iostream>
#include<cmath>
using namespace std;
bool prime(int num) {
	for (int i = 2;i <= sqrt(num);i++) {
		if (num % i == 0)
			return false;
	}
	return true;
}
void gotbaha(int num) {
	int first, last;
	for (first = 1;first <= num / 2;first++) {
		if (prime(first)) {
			last = num - first;
			if (prime(last)) {
				cout << num << "=" << first << "+" << last << endl;
			}
		}
	}
}
int main() {
	int num;
	cout << "输入一个不小于6的偶数:";
	cin >> num;
	if ((num >= 6) && (num % 2 == 0)) {
		gotbaha(num);
	}
	else
		cout << "输入错误" << endl;
	return 0;
}

运行结果:
在这里插入图片描述

发布了35 篇原创文章 · 获赞 35 · 访问量 616

猜你喜欢

转载自blog.csdn.net/weixin_45295612/article/details/105219909
今日推荐