Buenas, estoy teniendo problemas con este ejercicio. Al principio ejecutaba y me tiraba los primeros dos números primos (2 y 3) y se paraba ahí, aunque le hubiera ingresado, por ejemplo, el 12. Le hice algunas modificaciones esperando arreglarlo, pero ahora escribe el mensaje del segundo writeln y no hace nada más. Mi código es el siguiente:
PROGRAM nprimos;
VAR
n, divisor, fin, num : INTEGER;
raiz : REAL;
primo : BOOLEAN;
BEGIN
writeln ('Escriba un numero natural.');
readln (n);
(*Encontar los primeros n primos y calcular su raiz cuadrada*)
writeln ('Los primeros ', n:1, ' primos y sus correspondientes raices cuadradas son:');
num := 2;
while num < n do
begin
(*Encontrar un numero primo*)
primo := TRUE;
fin := trunc(sqrt(num));
divisor := 2;
while (divisor <= fin) do
begin
if (num mod divisor = 0) then
primo := FALSE
else divisor := divisor + 1;
if primo then
begin
raiz := sqrt(num);
writeln (num, ' ---> ', raiz:1:3)
end
end;
num := num + 1
end
END.
Agradecería mucho una ayuda para poder terminarlo. Saludos.