JavaScript is required

Cho đoạn chương trình sau:

public class Test {

public static void main(String[] args) {

int k=0,n,dem,j=0;

while(j<3) {

k++;

dem=0;

for(n=2;n

if(k%n==0) dem++;

if(dem==1) {

System.out.print(k+" ");

j++;

}

}

}

}

}

Đoạn chương trình trên cho kết quả là bao nhiêu?

A.

A. Chương trình báo lỗi

B.

B. 2: 2 3 5

C.

C. 4 4 6

D.

D. 2 3 4 4

Trả lời:

Đáp án đúng: C


Đoạn chương trình trên thực hiện một vòng lặp `while` với điều kiện `j < 3`. Bên trong vòng lặp `while`, biến `k` tăng lên mỗi lần lặp. Một vòng lặp `for` được sử dụng để kiểm tra xem `k` có phải là số nguyên tố hay không. Nếu `k` chia hết cho một số `n` trong khoảng từ 2 đến `k-1`, biến `dem` tăng lên. Nếu `dem` bằng 1 (tức là `k` có đúng một ước số trong khoảng đó), `k` được in ra và `j` tăng lên. Chúng ta hãy theo dõi các giá trị của `k`, `dem`, và `j` trong quá trình thực thi: - **k = 1:** Vòng lặp `for` không thực hiện vì `n = 2` và `n < k` (tức là `2 < 1`) là sai. `dem` vẫn là 0. Không in gì cả. - **k = 2:** Vòng lặp `for` không thực hiện vì `n = 2` và `n < k` (tức là `2 < 2`) là sai. `dem` vẫn là 0. Không in gì cả. - **k = 3:** Vòng lặp `for` chạy với `n = 2`. `3 % 2 != 0` nên `dem` vẫn là 0. Không in gì cả. - **k = 4:** Vòng lặp `for` chạy với `n = 2` và `n = 3`. `4 % 2 == 0` nên `dem` tăng lên 1. In ra `4`. `j` tăng lên 1 (j = 1). - **k = 5:** Vòng lặp `for` chạy với `n = 2, 3, 4`. `5 % 2 != 0`, `5 % 3 != 0`, `5 % 4 != 0`. `dem` vẫn là 0. Không in gì cả. - **k = 6:** Vòng lặp `for` chạy với `n = 2, 3, 4, 5`. `6 % 2 == 0` nên `dem` tăng lên 1. In ra `6`. `j` tăng lên 2 (j = 2). - **k = 7:** Vòng lặp `for` chạy với `n = 2, 3, 4, 5, 6`. `7 % 2 != 0`, `7 % 3 != 0`, `7 % 4 != 0`, `7 % 5 != 0`, `7 % 6 != 0`. `dem` vẫn là 0. Không in gì cả. - **k = 8:** Vòng lặp `for` chạy với `n = 2, 3, 4, 5, 6, 7`. `8 % 2 == 0` nên `dem` tăng lên 1. In ra `8`. `j` tăng lên 3 (j = 3). Vòng lặp `while` kết thúc. Vậy kết quả in ra là: 4 6 8

Câu hỏi liên quan