=={{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>
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}}==
|