题解
2026-05-07 18:46:37
发布于:湖南
3阅读
0回复
0点赞
题意
1.输入:一个不超过 10000 的偶数N
2.任务:验证4 ~ N 之间的所有偶数都满足哥德巴赫猜想(大于 2 的偶数 = 两个质数之和)
3.规则:
每个偶数必须拆成两个质数相加
若有多种拆法,必须输出第一个加数最小的那一种
按顺序逐行输出:
偶数=质数+质数
思路
1.先写一个判断质数的函数
函数isPrime(x):判断一个数是不是质数
小于 2 的数不是质数
从 2 遍历到√x,若能被整除则不是质数,否则是质数
2. 主程序逻辑
读入偶数n
外层循环:遍历4~n 的所有偶数(每次 + 2,只处理偶数)
内层循环:从i=2开始,从小到大找第一个质数i
检查i和偶数-i是否都是质数
找到第一个符合条件的就立刻输出(保证第一个加数最小)
输出格式:even=i+(even-i)
完整代码
#include <iostream>
using namespace std;
bool isPrime(int x) {
if (x < 2) return 0;
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) return 0;
}
return 1;
}
int main() {
int n;
cin >> n;
for (int even = 4; even <= n; even += 2) {
for (int i = 2; i <= even / 2; i++) {
if (isPrime(i) && isPrime(even - i)) {
cout << even << "=" << i << "+" << even - i << endl;
break;
}
}
}
return 0;
}
这里空空如也








有帮助,赞一个