--- /dev/null
+PROGRAM PRIMZAHLEN(INPUT,OUTPUT);
+
+ CONST NMAX=1000; WNMAX=32;
+
+ VAR X,SQUARE,
+ I,K,LIM,N: INTEGER;
+ PRIM: BOOLEAN;
+ P: ARRAY[1..NMAX] OF INTEGER;
+ V: ARRAY[1..WNMAX] OF INTEGER;
+
+ BEGIN
+ WRITE("DIE ERSTEN N PRIMZAHLEN: N="); READ(N);
+ WRITELN;
+ P[1] := 2; WRITE(2 :5); X := 1; LIM := 1; SQUARE := 4;
+ FOR I:=2 TO N DO
+ BEGIN
+ REPEAT X := X + 2;
+ IF SQUARE <= X THEN
+ BEGIN V[LIM] := SQUARE;
+ LIM := LIM + 1;SQUARE := SQR(P[LIM])
+ END ;
+ K := 2; PRIM := TRUE;
+ WHILE PRIM AND (K<LIM) DO
+ BEGIN IF V[K]<X THEN V[K] := V[K] + P[K];
+ PRIM := (X<>V[K]); K := K+1
+ END
+ UNTIL PRIM ;
+ P[I] :=X; WRITE(X :7); IF I MOD 10 = 0 THEN WRITELN
+ END
+ END.