程式設計基礎(虛擬碼追蹤)
下列程式以減法使兩個整數 a、b 逐漸相等。執行後 k 的值為下列何者?
整數型: a ← 48, b ← 18, k ← 0
while (a ≠ b)
if (a > b)
a ← a − b
else
b ← b − a
endif
k ← k + 1
endwhile
- A3
- B4
- C6
查看答案與解析
正確答案:B. 4
這是以減法進行的歐幾里得演算法(輾轉相除法),反覆從較大的值減去較小的值,直到兩者相等。(a, b) 依序變為 (48, 18) → (30, 18) → (12, 18) → (12, 6) → (6, 6),共減了4次,因此 k = 4。最後的 a = b = 6 是最大公因數。若使用餘數(mod)的輾轉相除法,則只需 48 mod 18 = 12、18 mod 12 = 6、12 mod 6 = 0 這3次。
- A. 這是使用 mod 的輾轉相除法的重複次數。此程式使用的是減法。
- B. 正確。從 (48, 18) 到 (6, 6) 共4次。
- C. 這是最大公因數 a = b = 6 的值,不是 k 的值。