home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / TURBOM2 / M2DSIEVE.LBR / DSIEVE.MZD / DSIEVE.MOD
Text File  |  2000-06-30  |  1KB  |  61 lines

  1. MODULE DSieve;
  2.  
  3. (*
  4.  
  5. Sieve test with ten iterations
  6.  
  7. Adapted from MTSIEV10.MOD, author unknown
  8.  
  9. Demonstrates use of DStime Procedures
  10.  
  11. Jim Lill   29  Aug 87
  12.  
  13. *)
  14.  
  15. FROM DStime IMPORT CLOCK,MIN,SEC;
  16.  
  17.   CONST
  18.     SIZE = 7000;
  19.  
  20.   VAR
  21.     et, I, PRIME, K, COUNT, ITER, min, sec : CARDINAL;
  22.     time : BOOLEAN;
  23.     FLAGS: ARRAY [0..SIZE] OF BOOLEAN;
  24.  
  25. BEGIN
  26.   time:= CLOCK();
  27.   min:= MIN(); sec:= SEC();
  28.   WRITELN('Start Ten Iterations');
  29.   FOR ITER := 1 TO 10 DO
  30.  
  31.     COUNT := 0; 
  32.     FOR I := 0 TO SIZE DO 
  33.  
  34.       FLAGS[I] := TRUE
  35.     END;
  36.     FOR I := 0 TO SIZE DO 
  37.  
  38.       IF FLAGS[I] THEN 
  39.  
  40.         PRIME := I+I+3; 
  41.         K := I+PRIME; 
  42.         WHILE K <= SIZE DO
  43.  
  44.           FLAGS[K] := FALSE;
  45.  
  46.           INC(K, PRIME)
  47.         END; 
  48.  
  49.         INC(COUNT)
  50.       END
  51.     END; 
  52.  
  53.   END; 
  54.   time:= CLOCK();
  55.   WRITE(COUNT:0);
  56.   WRITE(' Primes, ');
  57.   min:= MIN() - min; sec:= SEC() - sec;
  58.   et:= sec + (60 * min);
  59.   WRITELN('Time Required= ',et:0,' Seconds')
  60. END DSieve.
  61.