GESP 四级 · GESP 202312 C++ 四级 第 15 题

选择题 · 答案 B · 考点:循环控制

← 整套速查表 GESP 四级 全部真题

题目

输入一个正整数 $N$($N \geq 7$),想找出它所有相邻的因数对,比如,输入 $12$,因数对有 $(1,2)$、$(2,3)$、$(3,4)$。下面哪段代码找不到所有的因数对?()

答案:B

考点

循环控制

解题思维

这题考循环边界和因数枚举逻辑。拿到题先想:相邻因数对(i, i+1)意味着i和i+1都能整除N,且i+1最大只能到N/2(否则i<1),所以枚举上限N/2就够,别傻乎乎写到N-1。

常见错误

最容易栽跟头的是选项B,死板地认为“因数对肯定从2开始”,把(1,2)这组最基础的相邻因数对给漏了。还有人会被D选项的上限N/2吓到,觉得不够,其实只要i+1>N/2,i就<1,不可能构成正整数因数对,N/2已经严丝合缝。

详细解析(节选)

【考点】循环控制|条件判断|枚举因数对

这道题本质是考你能否在枚举时精准界定范围。命题人挖坑点就在于:很多人写循环默认从1到N-1,却忽略了“相邻两个因数中较大的那个必定≤N/2”这一隐含约束——这是四级枚举类题目的经典盲区。

核心观察:若(i, i+1)是相邻因数对,则i和i+1必须同时整除N。既然i+1是N的因数,它最大能取到多少?显然不能超过N/2,因为如果i+1>N/2,那i<N/2,此时i和i+1不可能同时整除N(除非N=0或负数,但N≥7)。因此,枚举i从1到N/2,检查N能否同时被i和i+1整除,就能覆盖所有情况。

逐项拆解:

最阴险的细节:D的循环上限是N/2而非N,很多人会误以为“应该枚举到N-1”,其实上限N/2已足够,因为i+1>N/2时i>1,而i+1与i不可能同时整除N(那样N≥i(i+1)>(N/2)²,矛盾)。

考频与趋势:基础语法在2023年考了287题,2024年413题,2025年401题,说明这类枚举与循环边界题目在近年持续高频出现,尤其是GESP四级中占比186题,是重点。循环控制专题虽只有5题,但都是精准卡边界,命题人越来越喜欢在“看似多余的上限”里设坑。

预测:基于数据,未来四级题仍会高频考察枚举范围优化,可能会把上限写成N/2或N/3,让学生判断是否冗余。暂无足够依据预测具体年份题型,但边界陷阱不会消失。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断