Cho đoạn chương trình sau:
public class Test {
public static void main(String[] args) {
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)
System.out.print(k);
}
}
}
}
Đoạn chương trình trên cho kết quả là bao nhiêu?
=>=>
Trả lời:
Đáp án đúng: A
Đoạn chương trình này in ra các số từ 1 đến 10 (vòng lặp `k`) nếu số đó có nhiều hơn một ước số trong khoảng từ 2 đến chính nó (vòng lặp `n`).
* **k = 1:** Vòng lặp `n` không chạy vì `n` bắt đầu từ 2 và `2 <= k` là sai. Không in gì.
* **k = 2:** Vòng lặp `n` chạy một lần với `n = 2`. `k % n == 0` (2 % 2 == 0) nên `dem++`, `dem` trở thành 1. `dem > 1` là sai. Không in gì.
* **k = 3:** Vòng lặp `n` chạy với `n = 2` và `n = 3`. Với `n = 2`, `k % n != 0`. Với `n = 3`, vòng lặp không chạy vì điều kiện `n<=k` đã vi phạm ngay từ đầu. `dem` vẫn là 0. `dem > 1` là sai. Không in gì.
* **k = 4:** Vòng lặp `n` chạy với `n = 2`, `n = 3` và `n = 4`.
* `n = 2`: `4 % 2 == 0`, `dem++`, `dem = 1`.
* `n = 3`: `4 % 3 != 0`.
* `n = 4`: `4 % 4 == 0`, `dem++`, `dem = 2`.
`dem > 1` là đúng. In ra 4.
* **k = 5:** Vòng lặp `n` chạy từ 2 đến 5. `dem` chỉ tăng khi `n` là 5 (5 % 5 == 0), vậy `dem` là 1. Không in gì.
* **k = 6:** Vòng lặp `n` chạy từ 2 đến 6.
* `n = 2`: `6 % 2 == 0`, `dem = 1`.
* `n = 3`: `6 % 3 == 0`, `dem = 2`.
`dem > 1` là đúng. In ra 6.
* **k = 7:** Vòng lặp `n` chạy từ 2 đến 7. `dem` chỉ tăng khi `n` là 7, vậy `dem` là 1. Không in gì.
* **k = 8:** Vòng lặp `n` chạy từ 2 đến 8.
* `n = 2`: `8 % 2 == 0`, `dem = 1`.
* `n = 3`: `8 % 3 != 0`.
* `n = 4`: `8 % 4 == 0`, `dem = 2`.
`dem > 1` là đúng. In ra 8.
* **k = 9:** Vòng lặp `n` chạy từ 2 đến 9.
* `n = 2`: `9 % 2 != 0`.
* `n = 3`: `9 % 3 == 0`, `dem = 1`.
* `n = 4`: vòng lặp không chạy vì điều kiện `n<=k` đã vi phạm ngay từ đầu.
* `n = 9`: `9 % 9 == 0`, `dem = 2`.
`dem > 1` là đúng. In ra 9.
* **k = 10:** Vòng lặp `n` chạy từ 2 đến 10.
* `n = 2`: `10 % 2 == 0`, `dem = 1`.
* `n = 3`: `10 % 3 != 0`.
* `n = 4`:`10 % 5 != 0`.
* `n = 5`: `10 % 5 == 0`, `dem = 2`.
* `n = 10`: `10 % 10 == 0`, `dem = 3`.
`dem > 1` là đúng. In ra 10.
Vậy, kết quả là 468910