Factor-perfect numbers: Difference between revisions

m
→‎{{header|Phix}}: final 48 back in
m (→‎{{header|Phix}}: f(), m(), g() jibe)
m (→‎{{header|Phix}}: final 48 back in)
Line 134:
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">m</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">f</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">bool</span> <span style="color: #000000;">munge</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">x</span> <span style="color: #008080;">in</span> <span style="color: #000000;">s</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">x</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">deep_copy</span><span style="color: #0000FF;">(</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #008080000000;">notx</span><span style="color: #0000FF;">[$]!=</span><span style="color: #000000;">mungef</span> <span style="color: #008080;">then</span> <span style="color: #000000;">x</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">f</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">for</span> <span style="color: #008080000000;">ifi</span><span style="color: #0000FF;">=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)></span> <span style="color: #000000008080;">2to</span> <span style="color: #008080000000;">and2</span> <span style="color: #000000008080;">xby</span> <span style="color: #0000FF;">[$]=-</span><span style="color: #000000;">f1</span> <span style="color: #008080;">thendo</span>
<span style="color: #000000;">x</span><span style="color: #0000FF;">[</span><span style="color: #000000;">xi</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">/=</span> <span style="color: #000000;">x</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1i</span><span style="color: #0000FF;">..-</span><span style="color: #000000;">21</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">iffor</span>
<span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">[</span><span style="color: #000000;">2</span><span style="color: #0000FF;">..$])</span>
<span style="color: #008080;">else</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">x</span><span style="color: #0000FF;">[$]!=</span><span style="color: #000000;">f</span> <span style="color: #008080;">then</span> <span style="color: #000000;">x</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">f</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">to</span> <span style="color: #000000;">2</span> <span style="color: #008080;">by</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">x</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">/=</span> <span style="color: #000000;">x</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">[</span><span style="color: #000000;">2</span><span style="color: #0000FF;">..$])</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">if</span> <span style="color: #008080;">not</span> <span style="color: #000000;">munge</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">N</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">48</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">rN</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">f</span><span style="color: #0000FF;">(</span><span style="color: #000000;">N</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">jbm</span><span style="color: #0000FF;">(</span><span style="color: #004080;">bool</span> <span style="color: #000000;">munge</span><span style="color: #0000FF;">)</span>
<span style="color: #000000008080;">rNif</span> <span style="color: #0000FF000000;">munge</span> <span style="color: #008080;">then</span> <span style="color: #000000;">mrN</span> <span style="color: #0000FF;">(=</span> <span style="color: #000000;">rNm</span><span style="color: #0000FF;">,(</span><span style="color: #000000;">NrN</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mungeN</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic008080;">--end</span> nb<span style="color: true depends on false having happened#008080;">if</span>
<span style="color: #008080;">return</span> <span style="color: #0000FF;">{</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">rN</span><span style="color: #0000FF;">),</span><span style="color: #7060A8;">join_by</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #000000;">rN</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">ppf</span><span style="color: #0000FF;">),</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" "</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fmt</span><span style="color: #0000FF;">:=</span><span style="color: #008000;">"%-16s"</span><span style="color: #0000FF;">)}</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
Line 202 ⟶ 193:
<!--</syntaxhighlight>-->
{{out}}
Note that m(false) removes the final 48 where needed to match the Julia output, and m(true) puts it back on.
<pre>
48 sequences using first definition:
{1,2,4,8,16,48} {1,2,4,8,24,48} {1,2,4,8,48} {1,2,4,812,1624,48}
{1,2,4,812,2448} {1,2,4,1216,48} {1,2,4,1224,2448} {1,2,4,1648}
{1,2,46,12,24,48} {1,2,6,12,48} {1,2,6,1224,48} {1,2,6,12,2448}
{1,2,68,2416,48} {1,2,8,24,48} {1,2,8,1648} {1,2,812,24,48}
{1,2,12,48} {1,2,1216,2448} {1,2,1624,48} {1,2,2448}
{1,3,6,12,24,48} {1,3,6,12,48} {1,3,6,1224,48} {1,3,6,12,2448}
{1,3,612,24,48} {1,3,12,48} {1,3,1224,2448} {1,3,2448}
{1,4,8,16,48} {1,4,8,24,48} {1,4,8,1648} {1,4,812,24,48}
{1,4,12,48} {1,4,1216,2448} {1,4,1624,48} {1,4,2448}
{1,6,12,24,48} {1,6,12,48} {1,6,1224,2448} {1,6,2448}
{1,8,16,48} {1,8,1624,48} {1,8,2448} {1,12,24,48}
{1,12,2448} {1,16,48} {1,24,48} {1,48}
 
48 sequences using second definition:
{2,242,2,2,3} {2,2,122,3,2} {2,2,2,6} {2,2,23,2,32}
{2,2,2,3,24} {2,2,4,3,4} {2,2,3,26,2} {2,2,4,312}
{2,3,2,62,2} {2,3,82,4} {2,3,2,4,2} {2,3,2,2,28}
{2,3,4,2,3} {2,4,63,2} {2,4,2,36} {2,46,32,2}
{2,6,4} {2,68,2,23} {2,812,32} {2,12,224}
{3,162,2,2,2} {3,2,82,4} {3,2,2,4,2} {3,2,2,2,28}
{3,2,4,2,2} {3,4,4} {3,4,28,2} {3,8,216}
{4,122,2,3} {4,2,63,2} {4,2,2,36} {4,2,3,2,2}
{4,3,4} {4,4,3,2,2} {4,46,32} {4,6,212}
{6,82,2,2} {6,2,4} {6,2,24,2} {6,4,28}
{8,62,3} {8,2,3,2} {8,3,26} {12,42,2}
{12,2,24} {16,3} {24,2} {48}
 
Found 7: 0 1 48 1280 2496 28672 29808 (1.2s)
7,820

edits