A large commit.
[pdp8.git] / sw / src / pascal / PRIMZA.PS
diff --git a/sw/src/pascal/PRIMZA.PS b/sw/src/pascal/PRIMZA.PS
new file mode 100644 (file)
index 0000000..424bfbd
--- /dev/null
@@ -0,0 +1,30 @@
+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.