20 lines
503 B
Text
20 lines
503 B
Text
link "rational"
|
|
|
|
procedure main(args)
|
|
limit := integer(!args) | 60
|
|
every b := bernoulli(i := 0 to limit) do
|
|
if b.numer > 0 then write(right(i,3),": ",align(rat2str(b),60))
|
|
end
|
|
|
|
procedure bernoulli(n)
|
|
(A := table(0))[0] := rational(1,1,1)
|
|
every m := 1 to n do {
|
|
A[m] := rational(1,m+1,1)
|
|
every j := m to 1 by -1 do A[j-1] := mpyrat(rational(j,1,1), subrat(A[j-1],A[j]))
|
|
}
|
|
return A[0]
|
|
end
|
|
|
|
procedure align(r,n)
|
|
return repl(" ",n-find("/",r))||r
|
|
end
|