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++;
}
}
}
}
Đoạn chương trình trên cho kết quả là bao nhiêu?
=k;n++)>3)>
Trả lời:
Đáp án đúng: B
Đoạn chương trình trên thực hiện một vòng lặp `while` với điều kiện `j < 3`. Bên trong vòng lặp `while`, biến `k` tăng lên mỗi lần lặp. Một vòng lặp `for` được sử dụng để đếm số lượng ước của `k` (ngoại trừ 1 và chính nó). Nếu `k` có đúng một ước (tức là chỉ chia hết cho 1 và chính nó, hay nói cách khác, `k` là số nguyên tố), thì `k` được in ra và `j` tăng lên.
Bước 1: k = 1, dem = 0. Vòng for không chạy (n=2;n<=1). if(dem==1) là sai
Bước 2: k = 2, dem = 0. Vòng for chạy n=2, 2%2==0, dem = 1. if(dem==1) là đúng, in ra 2, j=1.
Bước 3: k = 3, dem = 0. Vòng for chạy n=2, 3%2!=0, n=3, 3%3==0, dem = 1. if(dem==1) là đúng, in ra 3, j=2.
Bước 4: k = 4, dem = 0. Vòng for chạy n=2, 4%2==0, dem = 1, n=3, 4%3!=0, n=4, 4%4==0, dem=2. if(dem==1) là sai
Bước 5: k = 5, dem = 0. Vòng for chạy n=2, 5%2!=0, n=3, 5%3!=0, n=4, 5%4!=0, n=5, 5%5==0, dem = 1. if(dem==1) là đúng, in ra 5, j=3. Vòng while kết thúc.
Vậy, kết quả in ra là 2 3 5.