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 / LANGUAGS / MODULA2 / CMPISQRT.MOD < prev    next >
Text File  |  2000-06-30  |  715b  |  32 lines

  1. (* Compute the largest integer less or equal to the
  2.    square foot of a given integer (due to Hoare). *)
  3.  
  4. MODULE isqrt;
  5. FROM InOut IMPORT ReadCard, WriteCard, WriteLn, WriteString;
  6.  
  7. VAR n,a2,b2,ab,t: CARDINAL;
  8.  
  9. BEGIN
  10.   WriteString('Enter n> ');
  11.   ReadCard(n); WriteLn;
  12.   WHILE n > 0 DO
  13.     a2 := 0; ab :=0;
  14.     b2 := 1;
  15.     WriteString('n = ');
  16.     WriteCard(n,4); WriteLn;
  17.     WHILE b2 <= n DO b2 := 4*b2 END;
  18.     WHILE b2 # 1 DO
  19.       ab := ab DIV 2; b2 := b2 DIV 4;
  20.       t := a2 + 2*ab + b2;
  21.       IF t <= n THEN
  22.         a2 := t;
  23.         ab := ab+b2;
  24.       END
  25.     END;
  26.     WriteCard(a2,4); WriteCard(ab,4);
  27.     WriteCard(b2,4); WriteLn;
  28.     WriteString('Enter n> ');
  29.     ReadCard(n); WriteLn;
  30.   END
  31. END isqrt.
  32.