Vì sao trong code kiểm tra số nguyên tố có lệnh uoc == 0?

#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");

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é :slight_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?