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 >
Wrap
Text File
|
2000-06-30
|
715b
|
32 lines
(* Compute the largest integer less or equal to the
square foot of a given integer (due to Hoare). *)
MODULE isqrt;
FROM InOut IMPORT ReadCard, WriteCard, WriteLn, WriteString;
VAR n,a2,b2,ab,t: CARDINAL;
BEGIN
WriteString('Enter n> ');
ReadCard(n); WriteLn;
WHILE n > 0 DO
a2 := 0; ab :=0;
b2 := 1;
WriteString('n = ');
WriteCard(n,4); WriteLn;
WHILE b2 <= n DO b2 := 4*b2 END;
WHILE b2 # 1 DO
ab := ab DIV 2; b2 := b2 DIV 4;
t := a2 + 2*ab + b2;
IF t <= n THEN
a2 := t;
ab := ab+b2;
END
END;
WriteCard(a2,4); WriteCard(ab,4);
WriteCard(b2,4); WriteLn;
WriteString('Enter n> ');
ReadCard(n); WriteLn;
END
END isqrt.