JavaScript is required

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?

int n=10,k;

for (k = 2; k <= n; k++) {

int dem = 0;

for (int i = 2; i <= k; i++)

if (n % k == 0)

dem++;

if ((n % k == 0) && (dem == 1))

cout << k << “ “;

}

A.

2

B.

2 5 10

C.

2 3 5

D.

2 5

Trả lời:

Đáp án đúng: A


Đoạn code này tìm các ước số nguyên tố của số n = 10. - Vòng lặp ngoài `for (k = 2; k <= n; k++)` duyệt qua các số từ 2 đến 10 (giá trị của n). - Biến `dem` đếm số lượng ước của `k` (từ 2 đến `k`). - Vòng lặp trong `for (int i = 2; i <= k; i++)` kiểm tra xem `k` có chia hết cho `i` không. - Nếu `n` chia hết cho `k` (`n % k == 0`) và `dem` chỉ bằng 1 (tức là `k` chỉ có một ước số là 1 và chính nó - tức là số nguyên tố), thì `k` được in ra. Khi `n = 10`: - `k = 2`: `n % k == 0` (10 % 2 == 0), `dem` sẽ là 1 (vì 2 chỉ chia hết cho 2). Do đó, 2 được in ra. - `k = 3`: `n % k != 0` (10 % 3 != 0), không in gì cả. - `k = 4`: `n % k != 0` (10 % 4 != 0), không in gì cả. - `k = 5`: `n % k == 0` (10 % 5 == 0), `dem` sẽ là 1 (vì 5 chỉ chia hết cho 5). Do đó, 5 được in ra. - `k = 6`: `n % k != 0` (10 % 6 != 0), không in gì cả. - `k = 7`: `n % k != 0` (10 % 7 != 0), không in gì cả. - `k = 8`: `n % k != 0` (10 % 8 != 0), không in gì cả. - `k = 9`: `n % k != 0` (10 % 9 != 0), không in gì cả. - `k = 10`: `n % k == 0` (10 % 10 == 0), nhưng `dem` sẽ lớn hơn 1 (10 chia hết cho 2, 5, 10). Do đó, 10 không được in ra. Kết quả là 2 5.

Câu hỏi liên quan