谭浩强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;
}
运行结果: