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?
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.