Bạn cần hiểu hàm Exit() sẽ trả về giá trị và thoát ngay khỏi hàm luôn.
Trong trường hợp của bạn thì biến
i chỉ chạy đến 2 là bị thoát rồi do điều kiện đúng hay sai đều gặp hàm exit cả.
Cách sửa: Bỏ phần else đi, thêm dấu chấm phẩy thay vào đó.
Mã:
for i := 2 to trunc(sqrt(n)) do
if (n mod i = 0) then exit(false);
exit(true);
Nếu i chia hết thì có thể thoát ra luôn, không cần kiểm tra tiếp, nên có thể exit(false) được. Còn exit(true) chỉ đặt ở cuối hàm thôi, vì nếu không chia hết một lần phải kiểm tra tiếp nữa.