Data update
This commit is contained in:
parent
07c7092a52
commit
61b93a2cd1
313 changed files with 6160 additions and 346 deletions
|
|
@ -2,28 +2,6 @@ BEGIN # find some Pell numbers - trans FreeBASIC ( which is trans Phix ) #
|
|||
|
||||
PR read "primes.incl.a68" PR
|
||||
|
||||
PROC is prime = ( LONG INT v )BOOL:
|
||||
IF v < 2 THEN FALSE
|
||||
ELIF v MOD 2 = 0 THEN v = 2
|
||||
ELIF v MOD 3 = 0 THEN v = 3
|
||||
ELSE
|
||||
LONG INT d := 5;
|
||||
BOOL result := TRUE;
|
||||
WHILE result AND d * d <= v DO
|
||||
IF v MOD d = 0
|
||||
THEN result := FALSE
|
||||
ELSE
|
||||
d +:= 2;
|
||||
IF v MOD d = 0
|
||||
THEN result := FALSE
|
||||
ELSE d +:= 4
|
||||
FI
|
||||
FI
|
||||
OD;
|
||||
result
|
||||
FI # is prime # ;
|
||||
|
||||
INT n;
|
||||
[ 0 : 90 ]LONG INT p, pl;
|
||||
p[ 0 ] := 0; p[ 1 ] := 1;
|
||||
pl[ 0 ] := 2; pl[ 1 ] := 2;
|
||||
|
|
@ -45,21 +23,19 @@ BEGIN # find some Pell numbers - trans FreeBASIC ( which is trans Phix ) #
|
|||
OD;
|
||||
|
||||
print( ( newline, "First 10 Pell primes:", newline, "index Pell prime", newline ) );
|
||||
INT pdx := 2;
|
||||
INT c := 0;
|
||||
WHILE
|
||||
INT c := 0;
|
||||
FOR pdx FROM 2 WHILE c < 10 DO
|
||||
IF is probably prime( p[ pdx ] ) THEN
|
||||
print( ( whole( pdx, -5 ), " ", whole( p[ pdx ], 0 ), newline ) );
|
||||
c +:= 1
|
||||
FI;
|
||||
pdx +:= 1;
|
||||
c < 10
|
||||
DO SKIP OD;
|
||||
FI
|
||||
OD;
|
||||
|
||||
[ 0 : 20 ]LONG INT nsw;
|
||||
FOR n FROM 0 TO 19 DO nsw[ n ] := p[ 2 * n ] + p[ 2 * n + 1 ] OD;
|
||||
print( ( newline, newline, "First 20 Newman-Shank-Williams numbers:", newline ) );
|
||||
FOR n FROM 0 TO 19 DO print( ( " ", whole( nsw[ n ], 0 ) ) ); IF n = 13 THEN print( ( newline ) ) FI OD;
|
||||
FOR n FROM 0 TO 19 DO
|
||||
LONG INT nsw = p[ 2 * n ] + p[ 2 * n + 1 ];
|
||||
print( ( " ", whole( nsw, 0 ) ) ); IF n = 13 THEN print( ( newline ) ) FI
|
||||
OD;
|
||||
|
||||
print( ( newline, newline, "First 20 near isosceles right triangles:", newline ) );
|
||||
LONG INT i0 := 0, i1 := 1, t := 1, found := 0;
|
||||
|
|
|
|||
90
Task/Pell-numbers/ALGOL-W/pell-numbers.alg
Normal file
90
Task/Pell-numbers/ALGOL-W/pell-numbers.alg
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
begin % find some Pell numbers - trans FreeBasic ( which is trans Phix ) %
|
||||
|
||||
% returns true if n is prime, false otherwise, uses trial division %
|
||||
logical procedure isPrime ( integer value n ) ;
|
||||
if n < 3 then n = 2
|
||||
else if n rem 3 = 0 then n = 3
|
||||
else if not odd( n ) then false
|
||||
else begin
|
||||
logical prime;
|
||||
integer f, f2, toNext;
|
||||
prime := true;
|
||||
f := 5;
|
||||
f2 := 25;
|
||||
toNext := 24; % note: ( 2n + 1 )^2 - ( 2n - 1 )^2 = 8n %
|
||||
while f2 <= n and prime do begin
|
||||
prime := n rem f not = 0;
|
||||
f := f + 2;
|
||||
f2 := toNext;
|
||||
toNext := toNext + 8
|
||||
end while_f2_le_n_and_prime ;
|
||||
prime
|
||||
end isPrime ;
|
||||
|
||||
integer MAX_P;
|
||||
MAX_P := 9;
|
||||
begin
|
||||
integer array p, pl ( 0 :: 20 ); % need more than 10 Pell numbers %
|
||||
integer c, pdx; % to find the fifth Pell prime %
|
||||
|
||||
p( 0 ) := 0; p( 1 ) := 1;
|
||||
pl( 0 ) := 2; pl( 1 ) := 2;
|
||||
for n := 2 until 20 do begin
|
||||
p( n ) := 2 * p( n - 1 ) + p( n - 2 );
|
||||
pl( n ) := 2 * pl( n - 1 ) + pl( n - 2 )
|
||||
end for_n ;
|
||||
|
||||
write( "First 10 Pell numbers:" );
|
||||
for n := 0 until MAX_P do begin writeon( i_w := 1, s_w := 0, " ", p( n ) ) end;
|
||||
write();write( "First 10 Pell-Lucas numbers:" );
|
||||
for n := 0 until MAX_P do begin
|
||||
writeon( i_w := 1, s_w := 0, " ", pl( n ) )
|
||||
end for_n ;
|
||||
|
||||
write( s_w := 0, "First 10 rational approximations of sqrt(2) (" );
|
||||
writeon( s_w := 0, r_format := "A", r_w := 8, r_d := 6, sqrt( 2 ), "):" );
|
||||
for n := 1 until MAX_P do begin
|
||||
integer j;
|
||||
j := pl( n ) div 2;
|
||||
write( i_w := 1, s_w := 0, " ", j, "/", p( n ), " ~= "
|
||||
, r_format := "A", r_w := 8, r_d := 6, j / p( n )
|
||||
)
|
||||
end for_n;
|
||||
|
||||
write();write( "First 5 Pell primes:" ); write( "index Pell prime" );
|
||||
c := 0;
|
||||
pdx := 2;
|
||||
while c < 5 do begin
|
||||
if isPrime( p( pdx ) ) then begin
|
||||
write( i_w := 5, s_w := 0, pdx, " ", i_w := 1, p( pdx ) );
|
||||
c := c + 1
|
||||
end if_isPrime_p_pdx ;
|
||||
pdx := pdx + 1
|
||||
end while_c_lt_5 ;
|
||||
|
||||
write(); write( "First 10 Newman-Shank-Williams numbers:" );write();
|
||||
for n := 0 until MAX_P do begin
|
||||
integer nsw;
|
||||
nsw := p( 2 * n ) + p( 2 * n + 1 );
|
||||
writeon( i_w := 1, s_w := 0, " ", nsw )
|
||||
end for_n;
|
||||
|
||||
write();write( "First 10 near isosceles right triangles:" );
|
||||
begin
|
||||
integer i, i0, i1, i2, t, found;
|
||||
i0 := 0; i1 := 1; t := 1; found := 0;
|
||||
i := 1;
|
||||
while found < 10 do begin
|
||||
i := i + 1;
|
||||
i2 := i1*2 + i0;
|
||||
if odd( i ) then begin
|
||||
write( i_w := 1, s_w := 0, " [", t, ", ", t + 1, ", ", i2, "]" );
|
||||
found := found + 1
|
||||
end if_odd_i ;
|
||||
t := t + i2; i0 := i1; i1 := i2
|
||||
end while_found_lt_10
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end.
|
||||
37
Task/Pell-numbers/Ruby/pell-numbers.rb
Normal file
37
Task/Pell-numbers/Ruby/pell-numbers.rb
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
require 'openssl'
|
||||
def prime?(n) = OpenSSL::BN.new(n).prime?
|
||||
|
||||
pell = Enumerator.new do |y|
|
||||
pe = [0,1]
|
||||
loop{y << pe[0]; pe << pe[1]*2 + pe.shift}
|
||||
end
|
||||
|
||||
pell_lucas = Enumerator.new do |y|
|
||||
pe = [2,2]
|
||||
loop{y << pe[0]; pe << pe[1]*2 + pe.shift}
|
||||
end
|
||||
|
||||
n = 20
|
||||
puts "First #{n} Pell numbers: #{pell.first(n).to_a.inspect}"
|
||||
puts "\nFirst #{n} Pell-Lucas numbers: #{pell_lucas.first(n).to_a.inspect}"
|
||||
|
||||
n = 15
|
||||
sqrt2 = pell.each_cons(2).lazy.map{|p1,p2| Rational(p1+p2, p2)}.take(n).to_a
|
||||
puts "\nThe first #{n} rational approximations of √2 (#{Math.sqrt(2)}) are:"
|
||||
sqrt2.each{|n| puts "%-16s ≈ %-18s\n"% [n, n.to_f]}
|
||||
|
||||
puts "\nThe first #{n} Pell primes with index are:"
|
||||
primes = pell.with_index.lazy.select{|n, i|prime?(i) && prime?(n)}.first(n)
|
||||
primes.each {|prime, i| puts "#{i.to_s.ljust(3)} #{prime}"}
|
||||
|
||||
puts "\nThe first #{n} NSW numbers:"
|
||||
puts pell.first(2*n).each_slice(2).map(&:sum).join(", ")
|
||||
|
||||
puts "\nFirst #{n} near isosceles right triangles:"
|
||||
sum = 1
|
||||
pell.take(n*2+2).each_slice(2) do |p1,p2|
|
||||
next if p1 == 0
|
||||
sum += p1
|
||||
puts "#{sum}, #{sum+1}, #{p2}"
|
||||
sum += p2
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue