Stirling numbers of the first kind: Difference between revisions

Added XPL0 example.
m (syntax highlighting fixup automation)
(Added XPL0 example.)
Line 1,896:
19710908747055261109287881673376044669240511161402863823515728791076863288440277983854056472903481625299174865860036734731122707870406148096000000000000000000
(158 digits, k = 5)
</pre>
 
=={{header|XPL0}}==
{{trans|ALGOL W}}
<syntaxhighlight lang "XPL0"> define MAX_STIRLING = 12;
integer S1 ( MAX_STIRLING+1, MAX_STIRLING+1 );
integer N, K, S1Term;
begin
\Construct a matrix of Stirling numbers up to max N, max N
for N := 0 to MAX_STIRLING do begin
for K := 0 to MAX_STIRLING do S1( N, K ) := 0
end; \for_N
S1( 0, 0 ) := 1;
for N := 1 to MAX_STIRLING do S1( N, 0 ) := 0;
for N := 1 to MAX_STIRLING do begin
for K := 1 to N do begin
S1Term := ( ( N - 1 ) * S1( N - 1, K ) );
S1( N, K ) := S1( N - 1, K - 1 ) + S1Term
end \for_K
end; \for_N
\Print the Stirling numbers up to N, K = 12
Text(0, "Unsigned Stirling numbers of the first kind:^m^j K" );
Format(10, 0);
for K := 0 to MAX_STIRLING do RlOut(0, float(K) );
CrLf(0);
Text(0, " N^m^j" );
for N := 0 to MAX_STIRLING do begin
Format(2, 0); RlOut(0, float(N));
Format(10, 0);
for K := 0 to N do begin
RlOut(0, float(S1( N, K )) )
end; \for_K
CrLf(0);
end \for_N
end</syntaxhighlight>
{{out}}
<pre style="font-size:66%">
Unsigned Stirling numbers of the first kind:
K 0 1 2 3 4 5 6 7 8 9 10 11 12
N
0 1
1 0 1
2 0 1 1
3 0 2 3 1
4 0 6 11 6 1
5 0 24 50 35 10 1
6 0 120 274 225 85 15 1
7 0 720 1764 1624 735 175 21 1
8 0 5040 13068 13132 6769 1960 322 28 1
9 0 40320 109584 118124 67284 22449 4536 546 36 1
10 0 362880 1026576 1172700 723680 269325 63273 9450 870 45 1
11 0 3628800 10628640 12753576 8409500 3416930 902055 157773 18150 1320 55 1
12 0 39916800 120543840 150917976 105258076 45995730 13339535 2637558 357423 32670 1925 66 1
</pre>
 
297

edits