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