题目描述
输入一个偶数
N
N
N,验证
4
∼
N
4∼N
4∼N 所有偶数是否符合哥德巴赫猜想:任一大于
2
2
2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如
10
=
3
+
7
=
5
+
5
10=3+7=5+5
10=3+7=5+5,则
10
=
5
+
5
10=5+5
10=5+5 是错误答案。
输入格式
第一行输入一个正偶数
N
N
N
输出格式
输出
N
−
2
2
\frac {N-2} {2}
2N−2 行。对于第
i
i
i 行:
首先先输出正偶数 2 i + 2 2i+2 2i+2,然后输出等号,再输出加和为 2 i + 2 2i+2 2i+2 且第一个加数最小的两个质数,以加号隔开。
输入数据 1
10
输出数据 1
4=2+2
6=3+3
8=3+5
10=3+7
提示
数据保证,
4
≤
N
≤
10000
4 \le N \le 10000
4≤N≤10000。
C++:
#include <iostream>
using namespace std;
bool isPrime(int n) {
if (n < 2)
return false;
for (int i = 2; i <= n / i; i++) {
if (n % i == 0)
return false;
}
return true;
}
int main() {
int n;
cin >> n;
for (int i = 4; i <= n; i += 2) {
for (int a = 2; a <= i - 2; a++) {
if (isPrime(a) && isPrime(i - a)) {
cout << i << "=" << a << "+" << i - a << endl;
break;
}
}
}
return 0;
}