Equal prime and composite sums: Difference between revisions

m
→‎{{header|Phix}}: slightly simpler and faster (no need for that +3)
(J)
m (→‎{{header|Phix}}: slightly simpler and faster (no need for that +3))
Line 209:
<span style="color: #000000;">csn</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">nci</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">3</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">nc</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">4</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">ncp</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">5</span><span style="color: #0000FF;">,</span>
<span style="color: #000000;">found</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
<span style="color: #008080;">whileconstant</span> <span style="color: #000000;">foundlimit</span> <span style="color: #0000FF;"><=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()=</span><span style="color: #004600;">JS</span><span style="color: #0000FF;">?</span><span style="color: #000000;">10</span><span style="color: #0000FF;">:</span><span style="color: #000000;">11</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #004080008080;">integerwhile</span> <span style="color: #000000;">cfound</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">compare</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pslimit</span><span style="color: #0000FF;">,</span><span style="color: #000000008080;">csdo</span><span style="color: #0000FF;">)+</span><span style="color: #000000;">3</span> <span style="color: #000080;font-style:italic;">-- {-1,0,+1} --&gt; {2,3,4},
<span style="color: #008080004080;">ifinteger</span> <span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">oddcompare</span><span style="color: #0000FF;">(</span><span style="color: #000000;">cps</span><span style="color: #0000FF;">,</span><span style="color: #000000;">cs</span><span style="color: #0000FF;">)</span> <span style="color: #008080000080;font-style:italic;">then-- {-1,0,+1}</span>
-- so odd() means equal(),
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">60</span> <span style="color: #000080;font-style:italic008080;">-- do both, ie inc(ps) and inc(cs)then</span>
-- else bit2 ==&gt; inc(ps),
-- and bit4 ==&gt; inc(cs).</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">odd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c</span><span style="color: #0000FF;">)</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;">"%,21d - %,10d%s prime sum, %,10d%s composite sum (%s)\n"</span><span style="color: #0000FF;">,</span>
<span style="color: #0000FF;">{</span><span style="color: #000000;">ps</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">psn</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">ord</span><span style="color: #0000FF;">(</span><span style="color: #000000;">psn</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">csn</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">ord</span><span style="color: #0000FF;">(</span><span style="color: #000000;">csn</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>
<span style="color: #000000;">found</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
<span style="color: #000000;">c</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">6</span> <span style="color: #000080;font-style:italic;">-- do both, ie inc(ps) and inc(cs)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">and_bits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF000000;">)0</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">psn</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span> <span style="color: #000080;font-style:italic;">-- prime sum number</span>
<span style="color: #000000;">npi</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span> <span style="color: #000080;font-style:italic;">-- next prime index</span>
<span style="color: #000000;">ps</span> <span style="color: #0000FF;">+=</span> <span style="color: #7060A8;">get_prime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">npi</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">and_bits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF000000;">)0</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">csn</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span> <span style="color: #000080;font-style:italic;">-- composite sum number</span>
<span style="color: #000000;">nc</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span> <span style="color: #000080;font-style:italic;">-- next composite?</span>
Line 246 ⟶ 243:
18,859,052 - 2,143rd prime sum, 5,699th composite sum (0.2s)
93,952,013 - 4,556th prime sum, 12,821st composite sum (0.2s)
89,171,409,882 - 118,785th prime sum, 403,341st composite sum (0.4s3s)
9,646,383,703,961 - 1,131,142nd prime sum, 4,229,425th composite sum (1.7s3s)
209,456,854,921,713 - 5,012,372nd prime sum, 19,786,181st composite sum (65.9s2s)
3,950,430,820,867,201 - 20,840,220th prime sum, 86,192,660th composite sum (2922.4s)
</pre>
The next value in the series is beyond an 80 bit float, and I suspect this is one of those sort of tasks where gmp, or perhaps I should rather say over a billion invocations of the Phix interface to it, might not shine quite so brightly.
7,804

edits