Cho m, n, i là các biến nguyên. Khi chạy đoạn chương trình:
m:=4; n:=5; i:=5;
Repeat
i:=i+1;
Until (i Mod m = 0) and (i Mod n = 0);
Giá trị sau cùng của i là:
Trả lời:
Đáp án đúng: A
Đoạn chương trình trên là một vòng lặp `Repeat...Until`.
Ban đầu, `m = 4`, `n = 5`, và `i = 5`. Vòng lặp sẽ tiếp tục cho đến khi điều kiện `(i Mod m = 0) and (i Mod n = 0)` trở thành đúng.
Chúng ta hãy theo dõi giá trị của `i` trong mỗi lần lặp:
- Lần lặp 1: `i = 5`. Điều kiện `(5 Mod 4 = 0) and (5 Mod 5 = 0)` tương đương với `(1 = 0) and (0 = 0)`, tức là `False and True`, kết quả là `False`. `i` được cập nhật thành `i = 5 + 1 = 6`.
- Lần lặp 2: `i = 6`. Điều kiện `(6 Mod 4 = 0) and (6 Mod 5 = 0)` tương đương với `(2 = 0) and (1 = 0)`, tức là `False and False`, kết quả là `False`. `i` được cập nhật thành `i = 6 + 1 = 7`.
- Lần lặp 3: `i = 7`. Điều kiện `(7 Mod 4 = 0) and (7 Mod 5 = 0)` tương đương với `(3 = 0) and (2 = 0)`, tức là `False and False`, kết quả là `False`. `i` được cập nhật thành `i = 7 + 1 = 8`.
- Lần lặp 4: `i = 8`. Điều kiện `(8 Mod 4 = 0) and (8 Mod 5 = 0)` tương đương với `(0 = 0) and (3 = 0)`, tức là `True and False`, kết quả là `False`. `i` được cập nhật thành `i = 8 + 1 = 9`.
- Lần lặp 5: `i = 9`. Điều kiện `(9 Mod 4 = 0) and (9 Mod 5 = 0)` tương đương với `(1 = 0) and (4 = 0)`, tức là `False and False`, kết quả là `False`. `i` được cập nhật thành `i = 9 + 1 = 10`.
- Lần lặp 6: `i = 10`. Điều kiện `(10 Mod 4 = 0) and (10 Mod 5 = 0)` tương đương với `(2 = 0) and (0 = 0)`, tức là `False and True`, kết quả là `False`. `i` được cập nhật thành `i = 10 + 1 = 11`.
- ...
- Lần lặp n: ta tìm số `i` chia hết cho cả 4 và 5, tức là `i` là bội chung nhỏ nhất của 4 và 5. BCNN(4, 5) = 20.
Vậy, ta cần tìm `i` sao cho `i >= 5` và `i` là bội của 20. Các giá trị có thể của `i` là 20, 40, 60, ...
Vì `i` bắt đầu từ 5 và tăng dần lên 1, vậy nên để `i` đạt giá trị 20, cần 15 lần lặp.
- Lần lặp 15: `i = 5 + 15 = 20`. Điều kiện `(20 Mod 4 = 0) and (20 Mod 5 = 0)` tương đương với `(0 = 0) and (0 = 0)`, tức là `True and True`, kết quả là `True`. Vòng lặp dừng lại.
Vậy giá trị cuối cùng của `i` là 20.





