Arithmetic/Rational: Difference between revisions

Content added Content deleted
(→‎{{header|REXX}}: added the REXX language. -- ~~~~)
(→‎{{header|REXX}}: added the list of fractions used to sum the reciprocals. -- ~~~~)
Line 2,218: Line 2,218:
=={{header|REXX}}==
=={{header|REXX}}==
<lang rexx>/*REXX pgm implements a reasonably complete rational arithmetic (fract.)*/
<lang rexx>/*REXX pgm implements a reasonably complete rational arithmetic (fract.)*/
/*saves time by checking even #s.*/
L=length(2**19-1) /*saves time by checking even #s.*/
do j=2 to 2**19-1 by 2 /*ignore unity (can't be perfect)*/
do j=2 to 2**19-1 by 2 /*ignore unity (can't be perfect)*/
$=subword(divisors(j),2) /*ignore first factor (unity). */
$=divisors(j); s=0; @= /*get divisors, zero sum, null @.*/
do k=2 to words($)
s=0
do k=1 for words($)
r='1/'word($,k); @=@ r; s=fractFun(r,,s)
s=fractFun(1_||word($,k),,s)
end /*k*/
if s\==1 then iterate
end /*k*/
if s==1 then say 'perfect number:' j
say 'perfect number:' right(j,L) ' fractions:' @
end /*j*/
end /*j*/
exit /*stick a fork in it, we're done.*/
exit /*stick a fork in it, we're done.*/
Line 2,311: Line 2,311:
'''output'''
'''output'''
<pre style="overflow:scroll">
<pre style="overflow:scroll">
perfect number: 6
perfect number: 6 fractions: 1/2 1/3 1/6
perfect number: 28
perfect number: 28 fractions: 1/2 1/4 1/7 1/14 1/28
perfect number: 496
perfect number: 496 fractions: 1/2 1/4 1/8 1/16 1/31 1/62 1/124 1/248 1/496
perfect number: 8128 fractions: 1/2 1/4 1/8 1/16 1/32 1/64 1/127 1/254 1/508 1/1016 1/2032 1/4064 1/8128
perfect number: 8128
</pre>
</pre>