Achilles numbers: Difference between revisions

→‎{{header|Phix}}: replaced with the much faster Wren algorithm
m (→‎{{header|ALGOL 68}}: fixed cut&paste error in the output)
(→‎{{header|Phix}}: replaced with the much faster Wren algorithm)
Line 297:
=={{header|Phix}}==
{{libheader|Phix/online}}
You can run this online [http://phix.x10.mx/p2js/achilles.htm here] (though you should expect a blank screen for about 9s).
{{trans|Wren}}
<!--<lang Phix>(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #7060A8008080;">requiresfunction</span> <span style="color: #000000;">get_achilles</span><span style="color: #0000FF;">(</span><span style="color: #008000004080;">integer</span> <span style="1.0.2color: #000000;">minExp</span><span style="color: #0000FF;">),</span> <span style="color: #000080000000;font-">maxExp</span><span style="color:italic #0000FF;">-- [prime_factors(duplicates:=2) enhancement]</span>
<span style="color: #008080004080;">functionatom</span> <span style="color: #000000;">achilleslo10</span> <span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #0000007060A8;">npower</span><span style="color: #0000FF;">,(</span> <span style="color: #000000;">maxprime10</span><span style="color: #0000FF;">=-,</span><span style="color: #000000;">1minExp</span><span style="color: #0000FF;">),</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">fhi10</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">vslice</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">prime_factorspower</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n10</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">maxprimemaxExp</span><span style="color: #0000FF;">),</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">return</span> <span style="color: #7060A8;">min</span><span style="color: #0000FF000000;">(maxprime</span><span style="color: #000000;">f</span><span style="color: #0000FF;">)>=</span><span style="color: #000000;">2</span> <span style="color: #008080;">and</span> <span style="color: #7060A8;">gcdget_maxprime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fhi10</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">1</span>
<span style="color: #004080;">boolsequence</span> <span style="color: #000000;">bPrintDigitsachilles</span> <span style="color: #0000FF;">=</span> <span style="color: #0046000000FF;">false{}</span>
<span style="color: #008080;">iffor</span> <span style="color: #000000;">p2nb</span><span style="color: #0000FF;">>=</span><span style="color: #000000;">42</span> <span style="color: #008080;">andto</span> <span style="color: #7060A8;">oddfloor</span><span style="color: #0000FF;">(</span><span style="color: #0000007060A8;">p2npower</span><span style="color: #0000FF;">)(</span> <span style="color: #008080;">and</span> <span style="color: #000000;">achilleshi10</span><span style="color: #0000FF;">(,</span><span style="color: #000000;">n1</span><span style="color: #0000FF;">,/</span><span style="color: #000000;">maxprime3</span><span style="color: #0000FF;">))</span> <span style="color: #008080;">thendo</span>
<span style="color: #008080004080;">andatom</span> <span style="color: #000000;">strong_achillesb3</span> <span style="color: #0000FF;">(=</span> <span style="color: #000000;">nb</span> <span style="color: #0000FF;">,*</span> <span style="color: #000000;">maxprimeb</span> <span style="color: #0000FF;">)*</span> <span style="color: #008080000000;">thenb</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">ia</span><span style="color: #0000FF;">=</span><span style="color: #000000;">pn32</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">lengthfloor</span><span style="color: #0000FF;">(</span><span style="color: #0000007060A8;">p2sqrt</span><span style="color: #0000FF;">)(</span> <span style="color: #008080000000;">byhi10</span> <span style="color: #0000000000FF;">pn3))</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">integeratom</span> <span style="color: #000000;">p2np</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">p2b3</span> <span style="color: #0000FF;">[*</span> <span style="color: #000000;">na</span> <span style="color: #0000FF;">]*</span> <span style="color: #000000;">a</span>
<span style="color: #008080;">forif</span> <span style="color: #000000;">ip</span><span style="color: #0000FF;">>=</span><span style="color: #000000;">1hi10</span> <span style="color: #008080;">tothen</span> <span style="color: #000000008080;">pexit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">doif</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">np</span><span style="color: #0000FF;">>=</span><span style="color: #000000;">1lo10</span> <span style="color: #008080;">then</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">af</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF7060A8;">{},vslice</span> <span style="color: #0000000000FF;">sa(</span> <span style="color: #0000FF7060A8;">=prime_factors</span> <span style="color: #0000FF;">{},(</span> <span style="color: #000000;">countsp</span> <span style="color: #0000FF;">=,</span> <span style="color: #7060A8000000;">repeat2</span><span style="color: #0000FF;">(,</span><span style="color: #000000;">0maxprime</span><span style="color: #0000FF;">),</span><span style="color: #000000;">c2</span><span style="color: #0000FF;">)</span>
<span style="color: #004080008080;">sequenceif</span> <span style="color: #0000007060A8;">p2min</span> <span style="color: #0000FF;">=(</span> <span style="color: #7060A8000000;">repeatf</span><span style="color: #0000FF;">()<</span><span style="color: #000000;">02</span> <span style="color: #0000FF008080;">,or</span> <span style="color: #7060A8;">powergcd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">10f</span><span style="color: #0000FF;">,)=</span><span style="color: #000000;">c1</span> <span style="color: #0000FF008080;">))then</span> <span style="color: #000080;font-style:italic;">-- not perfect power</span>
<span style="color: #000000;">nachilles</span> <span style="color: #0000FF;">/&=</span> <span style="color: #000000;">ip</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</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;">end</span> <span style="color: #008080;">for</span>
<span style="color: #000000;">maxprimeachilles</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">get_maxprimeunique</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p99achilles</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">totachilles</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
<span style="color: #008080004080;">ifsequence</span> <span style="color: #7060A8000000;">rmdrachilles</span> <span style="color: #0000FF;">(=</span> <span style="color: #000000;">nget_achilles</span><span style="color: #0000FF;">,(</span><span style="color: #000000;">i1</span><span style="color: #0000FF;">)=,</span><span style="color: #000000;">05</span> <span style="color: #0080800000FF;">then)</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">totientstrong_achilles</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">tottotient</span> <span style="color: #0000FF;">=</span> <span style="color: #0000007060A8;">nsum</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_eq</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">gcd</span><span style="color: #0000000000FF;">i,{</span><span style="color: #7060A8;">tagset</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">),</span><span style="color: #000000;">2n</span><span style="color: #0000FF;">}),</span><span style="color: #000000;">1</span><span style="color: #0000FF;">))</span>
<span style="color: #008080;">whilereturn</span> <span style="color: #0000007060A8;">ifind</span><span style="color: #0000FF;">*(</span><span style="color: #000000;">itotient</span><span style="color: #0000FF;"><=,</span><span style="color: #000000;">nachilles</span> <span style="color: #0080800000FF;">do)</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">rmdr</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
<span style="color: #008080;">while</span> <span style="color: #004600;">true</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">n</span> <span style="color: #0000FF;">/=</span> <span style="color: #000000;">i</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">rmdr</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)!=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
<span style="color: #000000;">tot</span> <span style="color: #0000FF;">-=</span> <span style="color: #000000;">tot</span><span style="color: #0000FF;">/</span><span style="color: #000000;">i</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">i</span> <span style="color: #0000FF;">+=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">2</span><span style="color: #0000FF;">?</span><span style="color: #000000;">1</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;">while</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">></span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">tot</span> <span style="color: #0000FF;">-=</span> <span style="color: #000000;">tot</span><span style="color: #0000FF;">/</span><span style="color: #000000;">n</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">tot</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #0080807060A8;">function</span> <span style="color: #000000;">strong_achillesrequires</span><span style="color: #0000FF;">(</span><span style="color: #004080008000;">integer</span> <span style="color: #000000;1.0.2">n</span><span style="color: #0000FF;">,)</span> <span style="color: #000000000080;">maxprime</span><span font-style="color: #0000FFitalic;">=-</span><span- style="color: #000000;">1</span><span style="color: #0000FF;">[join_by(fmt)]</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">a</span> <span style="color: #0080800000FF;">return=</span> <span style="color: #0000007060A8;">achillesjoin_by</span><span style="color: #0000FF;">(</span><span style="color: #000000;">nachilles</span><span style="color: #0000FF;">,[</span><span style="color: #000000;">maxprime1</span><span style="color: #0000FF;">)..</span> <span style="color: #008080000000;">and50</span><span style="color: #0000FF;">],</span><span style="color: #000000;">achilles1</span><span style="color: #0000FF;">(,</span><span style="color: #000000;">totient10</span><span style="color: #0000FF;">(,</span><span style="color: #000000008000;">n" "</span><span style="color: #0000FF;">),</span><span style="color: #000000;">maxprimefmt</span><span style="color: #0000FF;">:=</span><span style="color: #008000;">"%4d"</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">isa</span> <span style="color: #0000FF;">+=</span> <span style="color: #0080807060A8;">ifffilter</span><span style="color: #0000FF;">(</span><span style="color: #000000;">iachilles</span><span style="color: #0000FF;">=,</span><span style="color: #000000;">2strong_achilles</span><span style="color: #0000FF;">?)[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">:..</span><span style="color: #000000;">230</span><span style="color: #0000FF;">)],</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #7060A8000000;">printfssa</span> <span style="color: #0000FF;">(=</span> <span style="color: #0000007060A8;">1join_by</span><span style="color: #0000FF;">,(</span><span style="color: #008000000000;">"First 50 Achilles numbers:\n%s\n"sa</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8000000;">join_by1</span><span style="color: #0000FF;">(,</span><span style="color: #000000;">a10</span><span style="color: #0000FF;">,</span><span style="color: #000000008000;">1" "</span><span style="color: #0000FF;">,</span><span style="color: #000000;">10fmt</span><span style="color: #0000FF;">,:=</span><span style="color: #008000;">" %5d"</span><span style="color: #0000FF;">)})</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
<span style="color: #0040807060A8;">integerprintf</span> <span style="color: #000000;">c</span> <span style="color: #0000FF;">=(</span> <span style="color: #008080000000;">iff1</span><span style="color: #0000FF;">(,</span><span style="color: #7060A8008000;">platform</span><span style="color:First #0000FF;">()=</span><span50 style="color:Achilles #004600;">JS</span><span style="colornumbers: #0000FF;\n%s\n">?</span><span style="color: #000000;">7</span><span style="color: #0000FF;">:,{</span><span style="color: #000000;">8a</span><span style="color: #0000FF;">}),</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000008000;">pn"First 30 strong Achilles numbers:\n%s\n"</span> <span style="color: #0000FF;">=,{</span> <span style="color: #000000;">0ssa</span><span style="color: #0000FF;">})</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">p2d</span><span style="color: #0000FF;">[=</span><span style="color: #000000;">i2</span> <span style="color: #0000FF008080;">]to</span> <span style="color: #0000FF008080;">=iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">or_bitsplatform</span><span style="color: #0000FF;">()=</span><span style="color: #000000004600;">p2JS</span><span style="color: #0000FF;">[?</span><span style="color: #000000;">i10</span><span style="color: #0000FF;">],:</span><span style="color: #000000;">112</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #000080;font-style:italic;">-- powerful numbers must be multiples of 2 or more squared primes,
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"FirstAchilles 30numbers strongwith Achilles%d numbersdigits:\n%sd\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">d</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">join_bylength</span><span style="color: #0000FF;">(</span><span style="color: #000000;">saget_achilles</span><span style="color: #0000FF;">,(</span><span style="color: #000000;">1d</span><span style="color: #0000FF;">,-</span><span style="color: #000000;">101</span><span style="color: #0000FF;">,</span><span style="color: #008000000000;">" "d</span><span style="color: #0000FF;">))})</span>
-- achilles numbers must be a multiple of at least 1 cubed prime</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">p2</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">10</span><span style="color: #0000FF;">,</span><span style="color: #000000;">c</span><span style="color: #0000FF;">))</span>
<span style="color: #008080;">while</span> <span style="color: #004600;">true</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">pn</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">pn2</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">get_prime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pn</span><span style="color: #0000FF;">),</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">pn2</span><span style="color: #0000FF;">></span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p2</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</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: #000000;">pn2</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p2</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">by</span> <span style="color: #000000;">pn2</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">p2</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;">2</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">pn3</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">get_prime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pn</span><span style="color: #0000FF;">),</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">pn3</span><span style="color: #0000FF;"><=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p2</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> <span style="color: #000080;font-style:italic;">-- (avoids a for loop limit error...)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">pn3</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p2</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">by</span> <span style="color: #000000;">pn3</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">p2</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: #7060A8;">or_bits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p2</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: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">a</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{},</span> <span style="color: #000000;">sa</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{},</span> <span style="color: #000000;">counts</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">c</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">bool</span> <span style="color: #000000;">bPrintDigits</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">false</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">p</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">c</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">p10</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">10</span><span style="color: #0000FF;">,</span><span style="color: #000000;">p</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">p99</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">10</span><span style="color: #0000FF;">,</span><span style="color: #000000;">p</span><span style="color: #0000FF;">)-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span>
<span style="color: #000000;">maxprime</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">get_maxprime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p99</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">p10</span> <span style="color: #008080;">to</span> <span style="color: #000000;">p99</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">p2n</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">p2</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">p2n</span><span style="color: #0000FF;">></span><span style="color: #000000;">4</span> <span style="color: #008080;">and</span> <span style="color: #7060A8;">odd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p2n</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">and</span> <span style="color: #000000;">achilles</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">,</span><span style="color: #000000;">maxprime</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">a</span><span style="color: #0000FF;">)<</span><span style="color: #000000;">50</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">a</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">a</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%4d"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n</span><span style="color: #0000FF;">))</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">a</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">50</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"First 50 Achilles numbers:\n%s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">join_by</span><span style="color: #0000FF;">(</span><span style="color: #000000;">a</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">10</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" "</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;">if</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sa</span><span style="color: #0000FF;">)<</span><span style="color: #000000;">30</span>
<span style="color: #008080;">and</span> <span style="color: #000000;">strong_achilles</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">,</span><span style="color: #000000;">maxprime</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">sa</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sa</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%5d"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n</span><span style="color: #0000FF;">))</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sa</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">30</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"First 30 strong Achilles numbers:\n%s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">join_by</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sa</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">10</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" "</span><span style="color: #0000FF;">)})</span>
<span style="color: #000000;">bPrintDigits</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">true</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">counts</span><span style="color: #0000FF;">[</span><span style="color: #000000;">p</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</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: #000000;">bPrintDigits</span> <span style="color: #008080;">then</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">p</span> <span style="color: #008080;">do</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">counts</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]!=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Achilles numbers with %d digits:%d\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span><span style="color: #000000;">counts</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]})</span>
<span style="color: #000000;">counts</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;">0</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;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #0000FF;">?</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">)</span>
Line 406 ⟶ 364:
Achilles numbers with 7 digits:2242
Achilles numbers with 8 digits:7395
Achilles numbers with 9 digits:24008
"21.2s"
Achilles numbers with 10 digits:77330
Achilles numbers with 11 digits:247449
Achilles numbers with 12 digits:788855
"2 minutes and 35s"
</pre>
Unfortunately that p2 sieve is a bit of a memory hog and it won't go to 9 digits (didn't bother testing but pretty sure JavaScript would choke on 8).
 
=={{header|Raku}}==
7,815

edits