JavaScript is required

Cho đoạn chương trình sau:

public class Test {

public static void main(String[] args) {

int n,k,dem;

for ( k = 1; k <= 10; k++ ) {

dem = 0;

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

if ( k%n==0) {

dem++;

}

if (dem > 1)

System.out.print(k);

}

}

}

}

Đoạn chương trình trên thực hiện công việc gì?

A.

A.In ra các hợp số từ 1 đến 10

B.

B.In ra tổng các số từ 1 đến 10

C.

C.In ra 3 số nguyên tố đầu tiên

D.

D.In ra các số từ 1 đến 100 và chia hết cho 3,7

Trả lời:

Đáp án đúng: A


Đoạn chương trình in ra các hợp số từ 1 đến 10. Giải thích: Vòng lặp ngoài `for ( k = 1; k <= 10; k++ )` duyệt các số từ 1 đến 10. Vòng lặp trong `for ( n = 3; n <= k; n++ )` kiểm tra xem `k` có chia hết cho một số `n` nào đó trong khoảng từ 3 đến `k` hay không. Biến `dem` đếm số lượng ước của `k` trong khoảng từ 3 đến `k`. Nếu `dem > 1`, tức là `k` có ít nhất hai ước trong khoảng này, thì `k` được in ra. Các số có từ hai ước trở lên (ngoài 1 và chính nó) là hợp số. Số 1 không phải là hợp số cũng không phải là số nguyên tố. Ví dụ: Khi k = 4, vòng lặp trong sẽ chạy với n = 3 và n = 4. Khi n = 4, 4%4 == 0, dem = 1. Vì dem không lớn hơn 1, nên 4 không được in ra ở vòng lặp này. Khi k = 6, vòng lặp trong sẽ chạy với n = 3, 4, 5, 6. Khi n = 3, 6%3 == 0, dem = 1. Khi n = 6, 6%6 == 0, dem = 2. Vì dem > 1, nên 6 được in ra. Vậy chương trình in ra các hợp số từ 1 đến 10.

Câu hỏi liên quan