Isqrt (integer square root) of X: Difference between revisions

no edit summary
(Isqrt (integer square root) of X en Fish)
No edit summary
Line 440:
71| 1,004,525,211,269,079,039,999,221,534,496,697,502,180,541,686,174,722,466,474,743| 1,002,260,051,717,656,279,450,068,093,686
73|49,221,735,352,184,872,959,961,855,190,338,177,606,846,542,622,561,400,857,262,407| 7,015,820,362,023,593,956,150,476,655,802
</pre>
 
=={{header|ALGOL-M}}==
The approach here, while not the quadratic residue algorithm, works just fine. The output
 
has been put into columnar form to avoid what would otherwise be an ugly mess on a typical
 
80 column display.
<lang algol>
BEGIN
 
% RETURN INTEGER SQUARE ROOT OF N %
INTEGER FUNCTION ISQRT(N);
INTEGER N;
BEGIN
INTEGER R1, R2;
R1 := N;
R2 := 1;
WHILE R1 > R2 DO
BEGIN
R1 := (R1+R2) / 2;
R2 := N / R1;
END;
ISQRT := R1;
END;
 
COMMENT - LET'S EXERCISE THE FUNCTION;
 
INTEGER I, COL;
WRITE("INTEGER SQUARE ROOT OF FIRST 65 NUMBERS:");
WRITE("");
COL := 1;
FOR I := 1 STEP 1 UNTIL 65 DO
BEGIN
WRITEON(ISQRT(I));
COL := COL + 1;
IF COL > 10 THEN
BEGIN
WRITE("");
COL := 1;
END;
END;
 
WRITE("");
WRITE(" N 7^N ISQRT");
WRITE("--------------------");
COMMENT - ODD POWERS OF 7 GREATER THAN 3 WILL CAUSE OVERFLOW;
FOR I := 1 STEP 2 UNTIL 3 DO
BEGIN
INTEGER POW7;
POW7 := 7**I;
WRITE(I, POW7, ISQRT(POW7));
END;
WRITE("THAT'S ALL. GOODBYE.");
 
END
</lang>
{{out}}
<pre>
INTEGER SQUARE ROOT OF FIRST 65 NUMBERS:
1 1 1 2 2 2 2 2 3 3
3 3 3 3 3 4 4 4 4 4
4 4 4 4 5 5 5 5 5 5
5 5 5 5 5 6 6 6 6 6
6 6 6 6 6 6 6 6 7 7
7 7 7 7 7 7 7 7 7 7
7 7 7 8 8
 
N 7^N ISQRT
--------------------
1 7 2
3 343 18
THAT'S ALL. GOODBYE.
</pre>
 
211

edits