em gặp vấn đề với đề bài xuất ra các số nguyên tố có trong mãng: đúng hết với mọi trường hợp nhưng duy nhât trường hợp 2 và 3 thì sai( vì thuật toán em chạy từ g đến căn bậc 2 số muốn xét, nhưng mà 2 và 3 khai căn thì không lớn hơn g nên code dưới k chạy)
Bởi vì có ngoại lệ nên bạn chỉ cần thêm 2 trường hợp kiểm tra xem phải là 2 và 3 là xong rồi. Topic về số nguyên tố này đã có rất nhiều người tạo rồi bạn. Bạn có thể dùng tính năng search mà.
Viết hàm kiểm tra ntn 2 và 3 vẫn nhận tốt (lí do là (int)sqrt(2) < 2), do bạn viết sai đó bởi vì phải kiểm tra xong một số rồi mới xét cộng được hay không.
sao 2 và 3 nhận vẫn tốt anh. 2 và 3 ko chạy được mà k chạy được thì nó đâu vào biến tổng đâu ạ. thêm nữa là số 9… sai, do đó là thuật toán sai(khi nào anh rãnh có thể giúp em sữa lại thuật toán được k ạ)
Còn điều kiện if của em sai vì sao, anh nghĩ em nên tự tìm hiểu.
Còn đây là cách sửa khi không cần viết thêm 1 hàm khác để check
for (int i = 0; i < dong; i++)
{
for (int j = 0; j < cot; j++)
{
int temp = a[i][j];
for (int g=2;g<=sqrt(temp);g++)
{
if (temp % g ==0) // nếu chia hết thì không phải số nguyên tố
{
a[i][j] = 0; // gán tất cả các số chia hết bằng 0
}
}
if (a[i][j] < 2)
{
a[i][j] = 0;
}
tong += a[i][j]; // cộng tổng các số trong mảng khác không
}
}
cout << "tong cac so nguyen to co trong ma tran la " << tong << endl;
return tong;