Pell numbers: Difference between revisions

julia example
m (Should link to the rosettacode Pythagorean Triples, also)
(julia example)
Line 158:
4684659 4684660 6625109
27304196 27304197 38613965</lang>
 
=={{header|Julia}}==
<lang julia>using Primes
 
function pellnumbers(wanted)
pells = [0, 1]
wanted < 3 && return pells[1:wanted]
while length(pells) < wanted
push!(pells, 2 * pells[end] + pells[end - 1])
end
return pells
end
 
function pelllucasnumbers(wanted)
pelllucas = [2, 2]
wanted < 3 && return pelllucas[1:wanted]
while length(pelllucas) < wanted
push!(pelllucas, 2 * pelllucas[end] + pelllucas[end - 1])
end
return pelllucas
end
 
function pellprimes(wanted)
i, lastpell, lastlastpell, primeindices, pellprimes = 0, big"0", big"1", Int[], BigInt[]
while length(primeindices) < wanted
pell = 2 * lastpell + lastlastpell
i += 1
if isprime(pell)
push!(primeindices, i)
push!(pellprimes, pell)
end
lastpell, lastlastpell = pell, lastpell
end
return primeindices, pellprimes
end
 
function approximationsqrt2(wanted)
p, q = pellnumbers(wanted + 1), pelllucasnumbers(wanted + 1)
return map(r -> "$r ≈ $(Float64(r))", [(q[n] // 2) // p[n] for n in 2:wanted+1])
end
 
function newmanshankwilliams(wanted)
pells = pellnumbers(wanted * 2 + 1)
return [pells[2i - 1] + pells[2i] for i in 1:wanted]
end
 
function nearisosceles(wanted)
pells = pellnumbers((wanted + 1) * 2 + 1)
return map(x -> (last(x), last(x) + 1, first(x)),
[(pells[2i], sum(pells[1:2i-1])) for i in 2:wanted+1])
end
 
function printrows(title, vec, columnsize = 8, columns = 10, rjust=false)
println(title)
for (i, n) in enumerate(vec)
print((rjust ? lpad : rpad)(n, columnsize), i % columns == 0 ? "\n" : "")
end
println()
end
 
printrows("Twenty Pell numbers:", pellnumbers(20))
printrows("Twenty Pell-Lucas numbers:", pelllucasnumbers(20))
printrows("Twenty approximations of √2:", approximationsqrt2(20), 44, 2)
pindices, pprimes = pellprimes(15)
printrows("Fifteen Pell primes:", pprimes, 90, 1)
printrows("Fifteen Pell prime zero-based indices:", pindices, 4, 15)
printrows("Twenty Newman-Shank-Williams numbers:", newmanshankwilliams(20), 17, 5)
printrows("Twenty near isoscecles triangle triplets:", nearisosceles(20), 52, 2)
</lang>{{out}}
<pre>
Twenty Pell numbers:
0 1 2 5 12 29 70 169 408 985
2378 5741 13860 33461 80782 195025 470832 1136689 2744210 6625109
 
Twenty Pell-Lucas numbers:
2 2 6 14 34 82 198 478 1154 2786
6726 16238 39202 94642 228486 551614 1331714 3215042 7761798 18738638
 
Twenty approximations of √2:
1//1 ≈ 1.0 3//2 ≈ 1.5
7//5 ≈ 1.4 17//12 ≈ 1.4166666666666667
41//29 ≈ 1.4137931034482758 99//70 ≈ 1.4142857142857144
239//169 ≈ 1.4142011834319526 577//408 ≈ 1.4142156862745099
1393//985 ≈ 1.4142131979695431 3363//2378 ≈ 1.4142136248948696
8119//5741 ≈ 1.4142135516460548 19601//13860 ≈ 1.4142135642135643
47321//33461 ≈ 1.4142135620573204 114243//80782 ≈ 1.4142135624272734
275807//195025 ≈ 1.4142135623637995 665857//470832 ≈ 1.4142135623746899
1607521//1136689 ≈ 1.4142135623728214 3880899//2744210 ≈ 1.414213562373142
9369319//6625109 ≈ 1.414213562373087 22619537//15994428 ≈ 1.4142135623730965
 
Fifteen Pell primes:
2
5
29
5741
33461
44560482149
1746860020068409
68480406462161287469
13558774610046711780701
4125636888562548868221559797461449
4760981394323203445293052612223893281
161733217200188571081311986634082331709
2964793555272799671946653940160950323792169332712780937764687561
677413820257085084326543915514677342490435733542987756429585398537901
4556285254333448771505063529048046595645004014152457191808671945330235841
 
Fifteen Pell prime zero-based indices:
2 3 5 11 13 29 41 53 59 89 97 101 167 181 191
 
Twenty Newman-Shank-Williams numbers:
1 7 41 239 1393
8119 47321 275807 1607521 9369319
54608393 318281039 1855077841 10812186007 63018038201
367296043199 2140758220993 12477253282759 72722761475561 423859315570607
 
Twenty near isoscecles triangle triplets:
(3, 4, 5) (20, 21, 29)
(119, 120, 169) (696, 697, 985)
(4059, 4060, 5741) (23660, 23661, 33461)
(137903, 137904, 195025) (803760, 803761, 1136689)
(4684659, 4684660, 6625109) (27304196, 27304197, 38613965)
(159140519, 159140520, 225058681) (927538920, 927538921, 1311738121)
(5406093003, 5406093004, 7645370045) (31509019100, 31509019101, 44560482149)
(183648021599, 183648021600, 259717522849) (1070379110496, 1070379110497, 1513744654945)
(6238626641379, 6238626641380, 8822750406821) (36361380737780, 36361380737781, 51422757785981)
(211929657785303, 211929657785304, 299713796309065) (1235216565974040, 1235216565974041, 1746860020068409)
</pre>
 
=={{header|Raku}}==
4,103

edits