#region Liệt kê tất cả số nguyên tố trong khoảng [1...n] với n nhập từ bàn phím >100
int n, a, uoc, bdau, i;
do
{
Console.Write("moi nhap so bat dau=");
bdau = int.Parse(Console.ReadLine());
Console.Write("moi nhap so ket thuc=");
n = int.Parse(Console.ReadLine());
Console.WriteLine("snt bat dau tu{0} den{1}", bdau, n);
} while (n < 100);
for (a = bdau; a <= n; a++)
{
uoc = 0;
for (i = 2; i <= a / 2; i++)
{
if (a % i == 0)
{
uoc++;
break;
}
}
if (uoc == 0 && a != 1)//tại sao cần dòng này
Console.Write("{0} ", a);
}
Console.Write("\n");
Vì sao trong code kiểm tra số nguyên tố có lệnh uoc == 0?
Số nguyên tố là số chỉ chia hết cho 1 và chính nó
Trong quá trình chạy for từ 2 đến int(sqrt(n)) thì nếu có một số mà n chia hết (trừ số 2 chia hết cho 2) thì cộng tổng số ước lên.
nếu uoc > 0 (có 1 số trong khoảng 2 -> int(sqrt(n)) chia hết cho n) thì số đó không phải là số nguyên tố
Note :
int(sqrt(n))là căn của n làm tròn số nguyên
1 Like
thank you nha cảm ơn vì câu trả lời
có gì bạn tick solution cho mình nhé 
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?