home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
languags
/
modula2
/
cmpisqrt.mod
< prev
next >
Wrap
Text File
|
1987-01-08
|
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.