Anh (Chị) hãy cho biết đoạn lệnh sau thực hiện công việc gì?
int main() {
int k=0,n,dem,j=0;
while(j<3) {
k++;
dem=0;
for(n=2;n<=k;n++)
if(k%n==0) dem++;
if(dem==1)
{ cout << k << “\t”; j++;
}
} return
0;
}
Trả lời:
Đáp án đúng: C
Đoạn chương trình này in ra 3 số nguyên tố đầu tiên.
**Giải thích chi tiết:**
* **Khởi tạo:**
* `k = 0`: Biến `k` được khởi tạo là 0, đây là biến sẽ được tăng lên và kiểm tra xem có phải số nguyên tố hay không.
* `n, dem, j = 0`: Các biến `n`, `dem`, `j` được khởi tạo là 0. `dem` dùng để đếm số lượng ước của `k`, `j` dùng để đếm số lượng số nguyên tố đã in ra.
* **Vòng lặp `while (j < 3)`:**
* Vòng lặp này sẽ lặp lại cho đến khi đã in ra 3 số nguyên tố (`j` đạt giá trị 3).
* `k++`: Tăng `k` lên 1 đơn vị ở mỗi vòng lặp.
* `dem = 0`: Đặt lại `dem` về 0 trước mỗi lần kiểm tra số `k`.
* **Vòng lặp `for (n = 2; n <= k; n++)`:**
* Vòng lặp này duyệt từ 2 đến `k` để tìm ước của `k`.
* `if (k % n == 0) dem++`: Nếu `k` chia hết cho `n`, tức là `n` là một ước của `k`, thì tăng `dem` lên 1.
* **Kiểm tra số nguyên tố:**
* `if (dem == 1)`: Nếu `dem` bằng 1, điều này có nghĩa là `k` chỉ có một ước (ngoài 1 và chính nó), tức là `k` là số nguyên tố.
* `cout << k << "\t"; j++`: In số nguyên tố `k` ra màn hình, sau đó tăng `j` lên 1 để đánh dấu đã in thêm một số nguyên tố.
Chương trình sẽ lần lượt kiểm tra các số tự nhiên tăng dần (bắt đầu từ 1, sau đó 2, 3,...) và in ra những số nào là số nguyên tố, cho đến khi in đủ 3 số nguyên tố thì dừng lại. Ba số nguyên tố đầu tiên là 2, 3, 5.