Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?
int n=10,k;
for (k = 2; k <= n; k++) {
int dem = 0;
for (int i = 2; i <= k; i++)
if (n % k == 0)
dem++;
if ((n % k == 0) && (dem == 1))
cout << k << “ “;
}
Trả lời:
Đáp án đúng: A
Đoạn code này tìm các ước số nguyên tố của số n = 10.
- Vòng lặp ngoài `for (k = 2; k <= n; k++)` duyệt qua các số từ 2 đến 10 (giá trị của n).
- Biến `dem` đếm số lượng ước của `k` (từ 2 đến `k`).
- Vòng lặp trong `for (int i = 2; i <= k; i++)` kiểm tra xem `k` có chia hết cho `i` không.
- Nếu `n` chia hết cho `k` (`n % k == 0`) và `dem` chỉ bằng 1 (tức là `k` chỉ có một ước số là 1 và chính nó - tức là số nguyên tố), thì `k` được in ra.
Khi `n = 10`:
- `k = 2`: `n % k == 0` (10 % 2 == 0), `dem` sẽ là 1 (vì 2 chỉ chia hết cho 2). Do đó, 2 được in ra.
- `k = 3`: `n % k != 0` (10 % 3 != 0), không in gì cả.
- `k = 4`: `n % k != 0` (10 % 4 != 0), không in gì cả.
- `k = 5`: `n % k == 0` (10 % 5 == 0), `dem` sẽ là 1 (vì 5 chỉ chia hết cho 5). Do đó, 5 được in ra.
- `k = 6`: `n % k != 0` (10 % 6 != 0), không in gì cả.
- `k = 7`: `n % k != 0` (10 % 7 != 0), không in gì cả.
- `k = 8`: `n % k != 0` (10 % 8 != 0), không in gì cả.
- `k = 9`: `n % k != 0` (10 % 9 != 0), không in gì cả.
- `k = 10`: `n % k == 0` (10 % 10 == 0), nhưng `dem` sẽ lớn hơn 1 (10 chia hết cho 2, 5, 10). Do đó, 10 không được in ra.
Kết quả là 2 5.