Musterlösung zu "Perfekte Zahlen"

MODULE Toll;
IMPORT d:=Display, c:= ColorPlane, Strings;

PROCEDURE ProgMain*;
VAR i,z,s,MaxLen:LONGINT;
       resCode,b:CHAR;
     
BEGIN
       d.WriteStr("TOLLE ZAHLEN"); 

       FOR z:=1 TO 100000 DO

              d. WriteIntXY(1, 1, z, 5); 
              s:=0;
              FOR i:= 1 TO z-1 DO (*überprüfung der zahl*)
                     IF z MOD i=0 
                            THEN s:=s+i
                     END; (*if*)
              END; (*for*)
              IF z=s 
                     THEN d.WriteIntXY(1,2,z,10); (*ausgabe der tollen zahl*)
                            d.WriteStr(" - dies ist eine 'Tolle Zahl'"); d.WriteLn; d.ReadChar(b); 
              
              END; (*if*)

       END;
       d.ReadChar(b); (*wartet bis Taste getrückt wurde*)
END ProgMain;
END Toll.

Zurück zur Wiederholung bei bekannter Anzahl der Durchläufe