Anonymous user
Taxicab numbers: Difference between revisions
m
→{{header|REXX}}: added more whitespace.
Thundergnat (talk | contribs) m (→{{header|Perl 6}}: Move some calculations out of hot loop, general speedup tweaks) |
m (→{{header|REXX}}: added more whitespace.) |
||
Line 2,700:
Programming note: to ensure that the taxicab numbers are in order, an extra 10% are generated.
<lang rexx>/*REXX program displays the specified first (lowest) taxicab numbers (for three ranges).*/
parse arg L.1 H.1 L.2 H.2 L.3 H.3 .
if L.1=='' | L.1=="," then L.1= 1 /*L1 is the low part of 1st range. */
if H.1=='' | H.1=="," then H.1= 25 /*H1 " " high " " " " */
Line 2,707:
if L.3=='' | L.3=="," then L.3=2000 /*L3 " " low " " 3rd " */
if H.3=='' | H.3=="," then H.3=2006 /*H3 " " high " " " " */
mx= max(
mx= mx + mx % 10
ww= length(mx) * 3;
numeric digits max(9, ww) /*prepare to use some larger numbers. */
@.=.;
$.= /* [↓] generate extra taxicab numbers.*/
iterate
end
A.=
call Esort mx /*sort taxicab #s with an exchange sort*/
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
Line 2,738:
U: return right(arg(1), w)'^3'arg(2) /*right─justify a number, append "^3" */
/*──────────────────────────────────────────────────────────────────────────────────────*/
Esort: procedure expose A.; parse arg N; h=
do while h>1; h= h % 2
do i=1 for N-h; k=h + i; j= i
do forever; parse var A.k xk .; parse var A.j xj .; if xk>=xj then leave
_= A.j;
if h>=j then leave; j= j - h;
end /*forever*/
end /*i*/
end /*while h>1*/; return</lang>
{{out|output|text= when using the default
<pre>
1: 1729 ───► 10^3 + 9^3 ──and── 12^3 + 1^3
|