Pell numbers: Difference between revisions
Content added Content deleted
m (Should link to the rosettacode Pythagorean Triples, also) |
(julia example) |
||
Line 158: | Line 158: | ||
4684659 4684660 6625109 |
4684659 4684660 6625109 |
||
27304196 27304197 38613965</lang> |
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}}== |
=={{header|Raku}}== |