while n<=1 do write('Nhap lai so can kiem tra'); readln(n);
Thứ nhất, có thể gây ra vòng lặp vô hạn (Nếu n=1 thì sẽ in vô hạn lần dòng chữ "Nhap lai so can kiem tra")
Thứ hai, không giải kĩ tại sao phải nhập lại (nhưng điều này không cần thiết.
2.
Mã:
a:=a+1;
mà không có giá trị cho trước của biến a.
Sửa lại:
Mã:
program ktnt;
uses crt;
var a,i,n: integer;
begin
clrscr; a:=0;
write('Nhap so can kiem tra:'); readln(n);
for i:=1 to n do if n mod i = 0 then a:=a+1;
if (a <> 2) or (n<=1) then writeln(n,' khong phai la so nguyen to') else writeln(n,' la so nguyen to');
readln
end.
Hàm OR cho kết quả sai khi cả hai đều sai, trường hợp còn lại thì luôn cho đúng.