普考-資訊處理計算機概要109 年第 24 題單選題
若執行以下的Python程式碼,則螢幕上輸出的數字依序為何?
for a in range(3, 9):
for b in range(2, a):
if a % b == 0:
print(b)
A2,2,3
B2,2,3,2,4正確答案
C3,2,4,5,2,3,6,7,2,4,8
D3,2,4,5,2,3,6,7,2,4,8,3,9
B正確答案
雙層迴圈找因數:a 從 3~8,b 從 2~a-1,印出能整除 a 的 b。
為什麼答案是 B
a=3→b=2 不整除;a=4→b=2 印 2;a=5→皆不整除;a=6→b=2 印 2、b=3 印 3;a=7→皆不整除;a=8→b=2 印 2、b=4 印 4。結果:2,2,3,2,4。
載入中…
完整詳解
Pro · 無限重點 雙層迴圈找因數:a 從 3~8,b 從 2~a-1,印出能整除 a 的 b。
range(3,9) 不含 9;逐一列出 a 的真因數(不含 1 與自身)即可。
逐選項分析
A✕
漏掉 a=6 的因數 2 和 3,以及 a=8 的因數 2、4。只算到 a=4、6 的部分就停。
B✓ 正確
a=3→b=2 不整除;a=4→b=2 印 2;a=5→皆不整除;a=6→b=2 印 2、b=3 印 3;a=7→皆不整除;a=8→b=2 印 2、b=4 印 4。結果:2,2,3,2,4。
C✕ 陷阱
誤把「印出 b」當成「印出 a 與所有 b」。這是把 a 也一起輸出的錯誤解讀。
D✕
除了誤印 a 之外,還把 range(3,9) 當成 range(3,10),多算了 a=9 的因數 3。雙重錯誤。
逐輪追蹤表
| a | b 範圍 | 整除的 b | 輸出 |
|---|
| 3 | 2 | 無 | (無) |
| 4 | 2,3 | 2 | 2 |
| 5 | 2,3,4 | 無 | (無) |
| 6 | 2,3,4,5 | 2,3 | 2, 3 |
| 7 | 2,3,4,5,6 | 無 | (無) |
| 8 | 2,3,4,5,6,7 | 2,4 | 2, 4 |
Python 的 range(x, y) 是「含頭不含尾」,range(3,9) 只到 8,range(2,a) 只到 a-1。C、D 選項就是故意把 a 也列入輸出誘導你出錯,務必看清楚 print 括號裡是 b 不是 a。