Entonces tu problema se reduce a determinar si un número es primo o no. Bien.
Aunque estoy seguro que alguien más lo ha hecho antes (y mejor que yo) esta es mi solución al problema:
function EsPrimo(Num: Longint): Boolean;
var
I, Max: Longint;
begin
EsPrimo:=true; { verdadero por omisión }
if (Num=1) then
begin
EsPrimo:=false;
exit; { sale }
end;
Max:=trunc(sqrt(Num)); { calcula el máximo posible }
for I:=2 to Max do
if Num mod i = 0 then { es division exacta? }
begin
EsPrimo:=false;
exit; { sale }
end;
end; { EsPrimo }
Y se usa así:
if EsPrimo(Numero) then WriteLn('El número ',Numero,' es primo.')
else WriteLn('El número ',Numero,' no es primo.');