Die Wurzel kann man vereinfachen:
Statt auf Wurzel(x) zu überprüfen, kann man auch prüfen ob i² = x ist

Außerdem könnte man es einmal in eine Variable schreiben, da sich "Value" nicht ändern (sollte)... Dabei könnte man es auch konstant machen
Auch sind die ganzen exits unschön ...
Ich habe es mal größtenteils optimiert... Das mit den Quadrat hab ich mal nicht eingebaut... war mir net sicher...
Delphi-Quellcode:
function Prim(const Value: Cardinal) : Boolean;
var
i, sr : Cardinal;
begin
Result := true
if (Value <= 1) or ((Value mod 2 = 0) and (Value <> 2)) then
Result := false
else if Value > 2 then
begin
i := 3;
sr := Trunc(Sqrt(Value)) + 1;
while i <= sr do
begin
if Value mod i = 0 then
begin
Result := false;
exit;
end;
Inc(i, 2);
end;
end;
end;