Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -0,0 +1,96 @@
MODULE PellNumbers; (* find some Pell numbersl trans Algol W, FreeBasic, Phix *)
IMPORT Out, Math;
CONST MAXP = 9;
VAR p, pl :ARRAY 21 OF INTEGER; (* need more than 10 Pell numbers *)
c, pdx, j, n, nsw :INTEGER; (* to find the fifth Pell prime *)
(* returns true if n is prime, false otherwise, uses trial division *)
PROCEDURE isPrime( n : INTEGER ):BOOLEAN;
VAR prime :BOOLEAN;
f, f2, toNext :INTEGER;
BEGIN
IF n < 3 THEN prime := n = 2
ELSIF n MOD 3 = 0 THEN prime := n = 3
ELSIF ~ ODD( n ) THEN prime := FALSE
ELSE
prime := TRUE;
f := 5;
f2 := 25;
toNext := 24; (* note: ( 2n + 1 )^2 - ( 2n - 1 )^2 = 8n *)
WHILE ( f2 <= n ) & prime DO
prime := n MOD f # 0;
INC( f, 2 );
f2 := toNext;
INC( toNext, 8 )
END
END
RETURN prime
END isPrime;
PROCEDURE NearIsoscelesRightTriangles;
VAR i, i0, i1, i2, t, found :INTEGER;
BEGIN
i0 := 0; i1 := 1; t := 1; found := 0;
i := 1;
WHILE found < 10 DO
INC( i );;
i2 := i1*2 + i0;
IF ODD( i ) THEN
Out.String( " [" );Out.Int( t, 0 );
Out.String( ", " );Out.Int( t + 1, 0 );
Out.String( ", " );Out.Int( i2, 0 );
Out.String( "]" );Out.Ln;
INC( found )
END;
INC( t, i2 ); i0 := i1; i1 := i2
END
END NearIsoscelesRightTriangles;
BEGIN
p[ 0 ] := 0; p[ 1 ] := 1;
pl[ 0 ] := 2; pl[ 1 ] := 2;
FOR n := 2 TO 20 DO
p[ n ] := 2 * p[ n - 1 ] + p[ n - 2 ];
pl[ n ] := 2 * pl[ n - 1 ] + pl[ n - 2 ]
END;
Out.String( "First 10 Pell numbers:" );
FOR n := 0 TO MAXP DO Out.String( " " );Out.Int( p[ n ], 1 ) END; Out.Ln;
Out.String( "First 10 Pell-Lucas numbers:" );
FOR n := 0 TO MAXP DO Out.String( " " );Out.Int( pl[ n ], 1 ) END; Out.Ln;
Out.Ln;Out.String( "First 10 rational approximations of sqrt(2) (" );
Out.Real( Math.sqrt( 2.0 ), 8 );Out.String( "):" );
FOR n := 1 TO MAXP DO
j := pl[ n ] DIV 2;
Out.Ln;
Out.String( " " );Out.Int( j, 0 );Out.String( "/" );Out.Int( p[ n ], 0 );
Out.String( " ~= " );Out.Real( FLT( j ) / FLT( p[ n ] ), 8 );
END;
Out.Ln;
Out.Ln;Out.String( "First 5 Pell primes:" );
Out.Ln;Out.String( "index Pell prime" );
c := 0;
pdx := 2;
WHILE c < 5 DO
IF isPrime( p[ pdx ] ) THEN
Out.Ln;Out.Int( pdx, 6 );Out.String( " " );Out.Int( p[ pdx ], 0 );
INC( c )
END;
INC( pdx )
END;
Out.Ln;Out.Ln;Out.String( "First 10 Newman-Shank-Williams numbers:" );Out.Ln;
FOR n := 0 TO MAXP DO
nsw := p[ 2 * n ] + p[ 2 * n + 1 ];
Out.String( " " );Out.Int( nsw, 0 )
END;
Out.Ln;
Out.Ln;Out.String( "First 10 near isosceles right triangles:" );Out.Ln;
NearIsoscelesRightTriangles
END PellNumbers.