Das sieht sehr gut aus, ich habe in der zwischenzeit auch meinen code bearbeitet, jedoch wird auf einmal nur bis 1 ausgegeben.
Bevor ich die zwei neuen repeat schleifen eingefügt hab hat es bis 50 geklappt, siehst du vielleicht woran es liegt.
Delphi-Quellcode:
program ueb04;
{$APPTYPE CONSOLE}
{$R+,Q+,X-}
uses
System.SysUtils;
const
LOWER_BORDER = 0;
UPPER_BORDER = 50;
var
even: boolean;
fib: boolean;
twinprim: boolean;
NextPrim: boolean;
PrevPrim: boolean;
zahl: integer;
Primzahl: boolean;
teiler: integer;
uebrig: integer;
a: integer;
b: integer;
c: integer;
begin
for zahl := LOWER_BORDER to UPPER_BORDER do
begin
even := false;
fib := false;
twinprim := false;
if zahl > 1 then
begin
// Überprüfung ob gerade:
even := (zahl mod 2 = 0);
// Überprüfung ob Primzahl:
teiler := 1;
repeat
teiler := teiler + 1;
uebrig := zahl mod teiler;
until (uebrig = 0);
Primzahl := (zahl = teiler);
end;
if Primzahl then
begin
Teiler:= 1;
repeat
teiler := teiler + 1;
uebrig := zahl + 2 mod teiler;
until (uebrig = 0);
NextPrim := (zahl + 2) = teiler;
end;
if Primzahl and (zahl > 3) then
begin
Teiler:= 1;
repeat
teiler := teiler + 1;
uebrig := zahl - 2 mod teiler;
until (uebrig = 0);
PrevPrim := (zahl - 2) = teiler;
end;
twinprim := Primzahl and (NextPrim or PrevPrim);
// Überprüfung ob Teil der Fibonacci-Folge:
a := 0;
b := 1;
c := 0;
while (a < zahl) and not fib do
begin
c := a + b;
a := b;
b := c;
fib := c = zahl;
end;
WriteLn(zahl, ' even: ', even, ' fib: ', fib, ' twinprim: ', twinprim);
end;
readln;
end.