Equal prime and composite sums: Difference between revisions

Content added Content deleted
(→‎{{header|jq}}: simplify)
Line 60: Line 60:
See [[Erdős-primes#jq]] for a suitable definition of `is_prime` as used here.
See [[Erdős-primes#jq]] for a suitable definition of `is_prime` as used here.


The program given in this entry requires foreknowledge of the appropriate size of the Eratosthenes sieve.
The program given in this entry requires foreknowledge of the appropriate size of the (virtual) Eratosthenes sieve.
<lang jq>def lpad($len): tostring | ($len - length) as $l | (" " * $l)[:$l] +.;


<lang jq>def lpad($len): tostring | ($len - length) as $l | (" " * $l)[:$l] +.;
def primeSieve: [range(0;.) | if is_prime then . else false end];


def task($sievesize):
def task($sievesize):
{compSums:[],
($sievesize | primeSieve) as $p
| {compSums:[0],
primeSums:[],
primeSums:[],
csum:0,
csum:0,
psum:0 }
psum:0 }
| reduce range(2; $sievesize) as $i (.;
| reduce range(2; $sievesize) as $i (.;
if $p[$i] == false
if $i|is_prime
then .csum += $i
then .psum += $i
| .primeSums += [.psum]
else .csum += $i
| .compSums += [ .csum ]
| .compSums += [ .csum ]
else
.psum += $i
| .primeSums += [.psum]
end)
end)
| range(0; .primeSums|length) as $i
| range(0; .primeSums|length) as $i
Line 83: Line 80:
| (.compSums | index( $ps )) as $ix
| (.compSums | index( $ps )) as $ix
| select($ix >= 0)
| select($ix >= 0)
| "\($ps|lpad(21)) - \($i+1|lpad(21)) prime sum, \($ix|lpad(12)) composite sum"
| "\($ps|lpad(21)) - \($i+1|lpad(21)) prime sum, \($ix+1|lpad(12)) composite sum"
;
;