Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là 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 << “ “; j++;
}
} return
0;
}
Trả lời:
Đáp án đúng: B
Đoạn code C++ này tìm và in ra các số nguyên tố từ 2 trở lên cho đến khi in đủ 3 số.
`int k = 0, n, dem, j = 0;` Khởi tạo các biến: k (số hiện tại đang xét), n (biến lặp trong vòng for), dem (đếm số ước của k), j (đếm số lượng số nguyên tố đã in).
`while (j < 3)` Vòng lặp while tiếp tục cho đến khi in đủ 3 số nguyên tố (j < 3).
`k++;` Tăng k lên 1 trong mỗi vòng lặp while.
`dem = 0;` Đặt lại dem về 0 trước khi đếm số ước của k.
`for (n = 2; n <= k; n++)` Vòng lặp for để tìm các ước của k từ 2 đến k.
`if (k % n == 0)` Nếu k chia hết cho n, thì n là một ước của k, tăng dem lên 1.
`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 << " ";` In số nguyên tố k.
`j++;` Tăng j lên 1 (đã tìm thấy một số nguyên tố).
Khi k = 2, vòng for chạy từ 2 đến 2. `k % n == 0` chỉ đúng khi n = 2, vậy dem = 1. In ra 2 và j tăng lên 1.
Khi k = 3, vòng for chạy từ 2 đến 3. `k % n == 0` đúng khi n = 3, vậy dem = 1. In ra 3 và j tăng lên 2.
Khi k = 4, vòng for chạy từ 2 đến 4. `k % n == 0` đúng khi n = 2 và n = 4, vậy dem = 2. Không in gì cả.
Khi k = 5, vòng for chạy từ 2 đến 5. `k % n == 0` đúng khi n = 5, vậy dem = 1. In ra 5 và j tăng lên 3. Vòng lặp while kết thúc.
Vậy kết quả in ra là: 2 3 5