Cho đoạn mã sau kết quả hiển thị sẽ là:
int n=12,k=2;
while(k for(k=2;k<=n;k++) if(n%k==2){ { System.out.print(k + “ “); n=n/k; break; } } } =n;k++)
Trả lời:
Đáp án đúng: C
Đoạn mã Java này có một vòng lặp `while` bên ngoài và một vòng lặp `for` bên trong. Ta sẽ theo dõi giá trị của `n` và `k` trong quá trình thực thi:
1. **Khởi tạo:** `n = 12`, `k = 2`
2. **Vòng lặp `while` (k < n):** Điều kiện `2 < 12` đúng, nên vòng lặp `while` được thực thi.
3. **Vòng lặp `for` (k = 2; k <= n; k++):**
- `k = 2`: Kiểm tra `n % k == 2` (tức là `12 % 2 == 2`). Điều này sai (vì `12 % 2 == 0`).
- `k = 3`: Kiểm tra `n % k == 2` (tức là `12 % 3 == 2`). Điều này sai (vì `12 % 3 == 0`).
- `k = 4`: Kiểm tra `n % k == 2` (tức là `12 % 4 == 2`). Điều này sai (vì `12 % 4 == 0`).
- `k = 5`: Kiểm tra `n % k == 2` (tức là `12 % 5 == 2`). Điều này đúng!
- In ra `k` (tức là 5).
- `n` được gán bằng `n / k` (tức là `n = 12 / 5 = 2` - vì là số nguyên nên kết quả là 2).
- `break`: Thoát khỏi vòng lặp `for`.
4. **Quay lại vòng lặp `while` (k < n):** Điều kiện `2 < 2` là sai. Do đó, vòng lặp `while` kết thúc.
Vậy, kết quả in ra là 5.