本题导读
本题考查程序框图,以及整数除法与取余运算。
📌【题干】
Question
(2017年山东卷(理)) 执行两次如图所示的程序框图,若第一次输入的 的值为 7,第二次输入的 的值为 9,则第一次、第二次输出的 的值分别为 ()
A. 0,0 B. 1,1 C. 0,1 D. 1,0
🔍【思路分析】
破题导航
- 分析框图逻辑:该框图一般是一个判断质数的算法。输入一个正整数 ,通过循环使 从 2 开始递增。
- 第一次模拟 ():
- , 余数不为 0, 变为 3。
- , 余数不为 0, 变大… 直到满足退出循环条件(如 )。
- 由于 7 是质数,最终走向“是质数”的路径,输出 。
- 第二次模拟 ():
- , 余数不为 0, 变为 3。
- , 余数为 0,满足整除条件。
- 走向“非质数”路径,输出 。
✅【答案】
点击查看答案
D
✍【详细解析】
Abstract
【答案】 D 【解析过程】 第一次执行:输入
- ,判断 能否被 整除,不能,执行 ;
- 此时满足循环终止条件(例如 或 ),程序跳出循环;
- 根据路径,7 是质数,输出 。
第二次执行:输入
- ,判断 能否被 整除,不能,执行 ;
- ,判断 能否被 整除,能,余数为 0;
- 程序直接跳出循环,走向另一分支,输出 。
综上,第一次输出 1,第二次输出 0。 故选 D
💡【考点归纳与避坑指南】
Danger
- 算法功能识别:高考程序框图常考查经典算法,如“求最大公约数(更相减损术/辗转相除法)”、“判断质数”、“累加/累乘求和”等。
- 变量跟踪:在草稿纸上建立变量表(),逐步记录变量的变化,是避免逻辑混乱的最有效方法。
- 注意终止条件:是“直到型(Until)”还是“当型(While)”,以及判断框内的不等号是否包含等号,决定了循环的次数。
📖【试题探源与推广】
Tip
- 变式思考:如果输入 ,程序会输出什么?(通常输出 )。
- 代码关联:该框图在 Python 中对应的逻辑为:
def check(x): for n in range(2, int(x**0.5) + 1): if x % n == 0: return 0 return 1
🔗【关联脉络】
Multi column
/2017-山东卷理-06-题.png)