JavaScript is required

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à:

A.

20

B.

5

C.

4

D.

0

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.

Câu hỏi liên quan