#NOIP2010C1. NOIP2010 完善程序 1:哥德巴赫猜想
NOIP2010 完善程序 1:哥德巴赫猜想
题目来源
CCF NOIP 2010 初赛,普及组 C++,第四部分“完善程序”第 1 题。
题目描述
哥德巴赫猜想是指,任一大于 2 的偶数都可写成两个质数之和。迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。
下面的程序用于验证:任一大于 2 且不超过 n 的偶数都能写成两个质数之和。请阅读程序并填写空 1 至空 5。
作答要求
- 每个输入框只填写对应空缺处的内容,不填写空号。
- 不要额外填写题目中已经给出的分号、括号或其他符号。
- 系统已收录参考答案中明确给出的常见等价写法及常见空格形式;仍建议按规范 C++ 写法作答。
- 原卷中空 1 至空 4 每空 2.5 分,空 5 为 3 分。本题作为独立练习题,五空各 20 分,共 100 分。
程序
#include <iostream>
using namespace std;
int main()
{
const int SIZE = 1000;
int n, r, p[SIZE], i, j, k, ans;
bool tmp;
cin >> n;
r = 1;
p[1] = 2;
for (i = 3; i <= n; i++) {
/* 空 1 */;
for (j = 1; j <= r; j++)
if (i % /* 空 2 */ == 0) {
tmp = false;
break;
}
if (tmp) {
r++;
/* 空 3 */;
}
}
ans = 0;
for (i = 2; i <= n / 2; i++) {
tmp = false;
for (j = 1; j <= r; j++)
for (k = j; k <= r; k++)
if (i + i == /* 空 4 */) {
tmp = true;
break;
}
if (tmp)
ans++;
}
cout << ans << endl;
return 0;
}
若输入 n 为 2010,则输出空 5 所填的数时表示验证成功,即大于 2 且不超过 2010 的偶数都满足哥德巴赫猜想。
作答区
空 1(20 分): {{ input(1) }}
空 2(20 分): {{ input(2) }}
空 3(20 分): {{ input(3) }}
空 4(20 分): {{ input(4) }}
空 5(20 分): {{ input(5) }}