Pell numbers
func pell_number(n) {
lucasU(2, -1, n)
}
func pell_lucas_number(n) {
lucasV(2, -1, n)
}
say ("The first 10 Pell numbers: ", 10.of(pell_number).join(", "))
say ("The first 10 Pell-Lucas numbers: ", 10.of(pell_lucas_number).join(", "))
say "\nFirst 10 rational approximations to √2:"
{|n| pell_lucas_number(n) / 2 / pell_number(n) }.map(1..10).each {|r|
say "#{'%10s' % r.as_frac} =~ #{r.as_float}"
}
var pell_prime_indices = 10.by {|n| pell_number(n).is_prime }
say "\nThe first 10 Pell primes: "
pell_prime_indices.each {|n|
say "Pell(#{'%2s' % n}) = #{pell_number(n)}"
}
say ("\nThe first 10 Newman-Shank-Williams numbers: ",
10.of{|n| pell_number(2*n) + pell_number(2*n + 1) }.join(', '))
say "\nThe first 10 Pythagorean triples corresponding to near isosceles right triangles:"
10.of{|n| pell_number(2*n + 1) }.map {|h|
var t = isqrt(h**2 >> 1)
assert_eq(t**2 + (t+1)**2, h**2)
[t, t+1, h]
}.each{.say}Output:
Last updated
Was this helpful?