Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?
int N = 9 ,k;
for (k = 2;k <= N;k++)
if (N % k == 0) {
cout << k << “ “;
N = N/k;
k--;
}
Trả lời:
Đáp án đúng: B
Đoạn code trên thực hiện phân tích thừa số nguyên tố của số N. Ban đầu N = 9.
Vòng lặp `for (k = 2; k <= N; k++)` duyệt các số từ 2 đến N để tìm ước của N.
- **k = 2:** `N % k == 0` (9 % 2 == 0) là sai. k tăng lên.
- **k = 3:** `N % k == 0` (9 % 3 == 0) là đúng.
- In ra 3.
- `N = N / k = 9 / 3 = 3`.
- `k--` (k = 2).
- **k = 2:** `N % k == 0` (3 % 2 == 0) là sai. k tăng lên.
- **k = 3:** `N % k == 0` (3 % 3 == 0) là đúng.
- In ra 3.
- `N = N / k = 3 / 3 = 1`.
- `k--` (k = 2).
- **k = 2:** `N % k == 0` (1 % 2 == 0) là sai. k tăng lên.
- **k = 3:** `k <= N` (3 <= 1) là sai. Vòng lặp kết thúc.
Vậy kết quả in ra là "3 3".