Motzkin numbers: Difference between revisions
Content added Content deleted
(→{{header|ALGOL 68}}: Simplify the formatting code6) |
|||
Line 1,613: | Line 1,613: | ||
Aside: <small>Note that, under 32-bit and p2js, M[36] and M[37] happen only by chance to be correct: an intermediate value exceeds precision (in this case for M[36] it is a multiple of 2 and hence ok, for M[37] it is rounded to the nearest multiple of 4, and the final divide by (i+1) results in an integer simply because there isn't enough precision to hold any fractional part). |
Aside: <small>Note that, under 32-bit and p2js, M[36] and M[37] happen only by chance to be correct: an intermediate value exceeds precision (in this case for M[36] it is a multiple of 2 and hence ok, for M[37] it is rounded to the nearest multiple of 4, and the final divide by (i+1) results in an integer simply because there isn't enough precision to hold any fractional part). |
||
Output as above on 64-bit, less four entries under 32-bit and pwa/p2js, since unlike M[36..37], M[38..41] don't quite get away with the precision loss, plus M[39] and above exceed precision and hence is_prime() limits on 32-bit anyway.</small> |
Output as above on 64-bit, less four entries under 32-bit and pwa/p2js, since unlike M[36..37], M[38..41] don't quite get away with the precision loss, plus M[39] and above exceed precision and hence is_prime() limits on 32-bit anyway.</small> |
||
=={{header|Python}}== |
|||
{{trans|Go}} |
|||
<syntaxhighlight lang="python">""" rosettacode.org/wiki/Motzkin_numbers """ |
|||
from sympy import isprime |
|||
def motzkin(num_wanted): |
|||
""" Return list of the first N Motzkin numbers """ |
|||
mot = [1] * (num_wanted + 1) |
|||
for i in range(2, num_wanted + 1): |
|||
mot[i] = (mot[i-1]*(2*i+1) + mot[i-2]*(3*i-3)) // (i + 2) |
|||
return mot |
|||
def print_motzkin_table(N=41): |
|||
""" Print table of first N Motzkin numbers, and note if prime """ |
|||
print( |
|||
" n M[n] Prime?\n-----------------------------------") |
|||
for i, e in enumerate(motzkin(N)): |
|||
print(f'{i : 3}{e : 24,}', isprime(e)) |
|||
print_motzkin_table() |
|||
</syntaxhighlight>{{out}} Same as Go example. |
|||
=={{header|Quackery}}== |
=={{header|Quackery}}== |