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) {

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.

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

B.

2 3 5

C.

2 3 5 7 11

D.

Lặp vô hạn

Trả lời:

Đáp án đúng: D


Đoạn chương trình có một số vấn đề sau: 1. **Khởi tạo `k`**: Biến `k` được khởi tạo bằng 0. Vòng lặp `for (n = 2; n < k; n++)` sẽ không bao giờ được thực thi vì điều kiện `n < k` (tức là `n < 0`) luôn sai ngay từ đầu. 2. **Điều kiện `if(dem==1)`**: Điều kiện này chỉ kiểm tra khi `dem` bằng 1, tức là `k` có đúng một ước số trong khoảng từ 2 đến `k-1`. Số nguyên tố không có ước nào trong khoảng đó (ngoại trừ chính nó). Nên đoạn code này không tìm số nguyên tố. 3. **Vòng lặp while:** Vòng lặp `while(j<3)` có nhiệm vụ in ra 3 số, nhưng vì `k` luôn bằng 0, vòng lặp `for` không bao giờ chạy, biến `j` không được tăng lên. Vì vòng lặp `for` không chạy nên biến `dem` không đổi, điều kiện `if(dem==1)` không bao giờ đúng, và `j` không bao giờ tăng. Do đó, vòng lặp `while` sẽ lặp vô hạn.

Câu hỏi liên quan