Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?
int main() {
int n,k,dem;
for ( k = 1; k < 10; k++ )
{
dem = 0;
for ( n = 2; n <= k; n++ )
if (
k%n==0) dem++;
if
(dem > 1) cout << k;
}
}
Trả lời:
Đáp án đúng: D
Đoạn chương trình này in ra các số k từ 1 đến 9 mà có nhiều hơn một ước số trong khoảng từ 2 đến k.
- k = 1: Vòng lặp `n` không chạy vì `n = 2` và điều kiện `n <= k` không thỏa mãn. `dem = 0`. Không in gì.
- k = 2: Vòng lặp `n` chạy với `n = 2`. `k % n == 0` (2 % 2 == 0) nên `dem = 1`. Không in gì.
- k = 3: Vòng lặp `n` chạy với `n = 2`. `k % n != 0` (3 % 2 != 0) nên `dem = 0`. Không in gì.
- k = 4: Vòng lặp `n` chạy với `n = 2` và `n = 3` và `n = 4` thì `n=2`, `4 % 2 == 0` nên `dem = 1`. Khi `n=4`, `4 % 4 == 0` nên `dem = 2`. In ra 4.
- k = 5: Vòng lặp `n` chạy với `n = 2, 3, 4, 5`. `dem` chỉ tăng khi `n=5`, `5 % 5 == 0` nên `dem = 1`. Không in gì.
- k = 6: Vòng lặp `n` chạy với `n = 2, 3, 4, 5, 6`. `6 % 2 == 0` nên `dem = 1`. `6 % 3 == 0` nên `dem = 2`. `6 % 6 == 0` thì `dem=3`. In ra 6.
- k = 7: Vòng lặp `n` chạy với `n = 2, 3, 4, 5, 6, 7`. `7 % 7 == 0` nên `dem = 1`. Không in gì.
- k = 8: Vòng lặp `n` chạy từ 2 đến 8. `8 % 2 == 0` nên `dem = 1`. `8 % 4 == 0` nên `dem = 2`. `8 % 8 == 0` nên `dem = 3`. In ra 8.
- k = 9: Vòng lặp `n` chạy từ 2 đến 9. `9 % 3 == 0` nên `dem = 1`. `9 % 9 == 0` nên `dem = 2`. In ra 9.
Kết quả là 4689.