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) {
k++;
dem=0;
for(n=2;n<=k;n++) {
if(k%n==0) dem++;
}
if(dem==1) {
System.out.print(k+" ");
j++;
}
}
}
}
Chương trình trên thực hiện công việc gì?
=k;n++)>3)>
Trả lời:
Đáp án đúng: C
Đoạn chương trình trên in ra 3 số nguyên tố đầu tiên.
Giải thích:
- `int k=0, n, dem, j=0;`: Khai báo các biến k, n, dem, j kiểu số nguyên, khởi tạo k=0 và j=0.
- `while(j<3)`: Vòng lặp while chạy cho đến khi j = 3. Biến j được sử dụng để đếm số lượng số nguyên tố đã in.
- `k++;`: Tăng giá trị của k lên 1 trong mỗi lần lặp của vòng lặp while.
- `dem=0;`: Khởi tạo biến dem = 0. Biến dem được sử dụng để đếm số lượng ước của k (không kể 1 và chính nó).
- `for(n=2; n<=k; n++)`: Vòng lặp for chạy từ n=2 đến n=k.
- `if(k%n==0) dem++;`: Nếu k chia hết cho n, thì tăng biến dem lên 1.
- `if(dem==1)`: Nếu dem = 1, tức là k chỉ có một ước (ngoài 1 và chính nó), suy ra k là số nguyên tố.
- `System.out.print(k+" ");`: In giá trị của k ra màn hình, kèm theo một khoảng trắng.
- `j++;`: Tăng giá trị của j lên 1. Như vậy, chương trình sẽ in ra 3 số nguyên tố đầu tiên (2, 3, 5).
Khi k = 2, vòng lặp for chạy từ 2 đến 2. Khi đó, 2%2 == 0, nên dem=1. Vì dem=1, in ra 2. j=1
Khi k = 3, vòng lặp for chạy từ 2 đến 3. Khi đó, 3%2 != 0, 3%3 == 0, nên dem=1. Vì dem=1, in ra 3. j=2
Khi k = 4, vòng lặp for chạy từ 2 đến 4. Khi đó, 4%2 == 0, 4%3 != 0, 4%4 == 0, nên dem=2. Vì dem!=1, không in ra.
Khi k = 5, vòng lặp for chạy từ 2 đến 5. Khi đó, 5%2 != 0, 5%3 != 0, 5%4 != 0, 5%5 == 0, nên dem=1. Vì dem=1, in ra 5. j=3
Vòng lặp while kết thúc vì j=3.