//dem so luong so nguyen to co trong mang
dem = 0;
for (i = 0; i<n; i++)
{
// kiem tra xem a[i] co phai la so nguyen to hay ko
nto = (a[i]<2) ? 0 : 1;
for (j = 2; j<a[i]; j++)
if (a[i] % j == 0) // chia het
{
nto = 0;
break;
}
if (nto == 1) // a[i] la so nguyen to
dem++;
}
cout << "SL so nguyen to = " << dem << endl;
- bài này người code phân các số làm 2 loại:
+ loại 1: các số a[i] nhỏ hơn 2 => kết luận luôn là không phải số nguyên tố, gán nto = 0, sau đó chạy đến hàm for thì với j=2 thì điều kiện j<a[i] không bao giờ xảy ra nên thực tế là nó không thực hiện mấy cái trong ngoặc của vòng for này => nhảy tiếp xuống dưới thấy nto =0 nên ko tăng biến đếm và nhảy sang vòng for kiểm tra tiếp a[i+1]
+ loại 2: các số lớn hơn 2, loại này thì đếm số ước của nó để xem có phải số nguyên tố ko, nếu phải thì tăng biến đếm lên 1