Buen día, estoy tratando de hacer la parte b del ejercicio que me pide números primos entre dos enteron n y m, realicé un código el cual no entiendo en que estoy fallando. Cuando ejecuto el programa con dos números enteros me devuelve TODOS los números entre esos valores y no sólo los que son primos como plantea el ejercicio, no se si es un problema de como plantee la función o si me falta algún término. Me pueden ayudar? Paso el programa :
program primos;
var
i,n,m:integer;
function esprimo(x:integer):boolean;
var
j:integer;var
i,n,m:integer;
function esprimo(x:integer):boolean;
var
primo:boolean;
begin
primo:=true;
while primo and (j<=sqrt(x)) do
if n mod j = 0 then
primo:=false
else
j:=j+1;
esprimo:=primo
end;
begin
writeln('escriba dos numeros n y m');
readln(n,m);
for i:=n to m do
if esprimo(i) then
write(i);
end