正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2026 第一轮真题 › 第 31 题
CSP-J 2026 第一轮 第 31 题:程序(三):当输入为 24 时,程序输出的第 3 行为
题目
#include <iostream>
using namespace std;
bool check_prime(int x) {
if (x <= 1) return false;
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) return false;
}
return true;
}
int n;
void search_result(int x) {
if (!check_prime(x)) return;
if (x >= n) {
cout << x << endl;
return;
}
for (int i = 0; i <= 9; i++) {
search_result(x * 10 + i);
}
}
int main() {
cin >> n;
for (int i = 1; i <= 9; i++) search_result(i);
return 0;
}本小题
当输入为 24 时,程序输出的第 3 行为( )。
选项
- A. 23
- B. 29
- C. 31
- D. 239
答案
B
题解
答案是 B. 29。
这段程序按深度优先的顺序搜索,规则是:
x不是质数:直接返回。x是质数且x >= 24:输出x,然后返回。x是质数且x < 24:依次在末尾添加数字0~9,继续搜索。
从 main 开始:
1不是质数,跳过。2是质数,但小于24,依次尝试20、21、……、29。20、21、22不是质数,跳过。23是质数,但仍小于24,因此先深入搜索230~239。- 其中只有
233、239是质数,依次输出,成为第 1、2 行。 - 搜索完
23的分支后,回到上一层,继续尝试24~29。 24~28都不是质数。29是质数且大于等于24,输出,成为第 3 行。
所以前三行是:
``text 233 239 29 ``
关键是:遇到 23 时,要先搜索完它的所有分支,才会继续检查 24~29。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号