输入一个正整数 $N$($N \geq 7$),想找出它所有相邻的因数对,比如,输入 $12$,因数对有 $(1,2)$、$(2,3)$、$(3,4)$。下面哪段代码找不到所有的因数对?()
这题考循环边界和因数枚举逻辑。拿到题先想:相邻因数对(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,让学生判断是否冗余。暂无足够依据预测具体年份题型,但边界陷阱不会消失。