【题目描述】
哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和。编程将6~100所有偶数表示成两个素数之和。
【输入】
(无)
【输出】
分行输出:
例如:
6=3+3
8=3+5
…
(每个数只拆开一次,请保证第一个加数最小)
【改动】
我将题目扩展为判断6~n之间得到所有偶数是否满足哥德巴赫猜想,输入n,输出True或者False。
【解题代码】
#include <iostream>
using namespace std;
bool isPrim(int x)
{
for (int i = 2; i < x; i++) {
if (x % i == 0) {
return false;
}
}
return true;
}
bool verifyGoldbachConjecture(int n) {
bool isRight = false;
for (int j = 6; j < n + 1; j += 2) {
//cout << j << endl;
isRight = false;
for (int k = 2; k < j / 2 + 1; k++) {
if (isPrim(k) && isPrim(j - k)) {
isRight = true;
cout << j << "=" << k << "+" << j - k << endl;
break;
}
}
if (!isRight) {
//cout << "GlodbachConjecture is false !!!" << endl;
return false;
}
}
return true;
}
void coutVerifyResult(int n) {
if (verifyGoldbachConjecture(n)) {
cout << "True";
}
else {
cout << "False";
}
}
int main()
{
int n;
cin >> n;
coutVerifyResult(n);
return 0;
}
【代码分析】
- main函数中尽可能简洁明了,不要有太多函数具体处理过程,影响可读性。
- 将函数过程都分解为一个个函数的嵌套形式,命名基本让人明白函数目的,这样在没有注释的情况下也具有较好的可读性。