Equal prime and composite sums: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) (Added Perl) |
|||
Line 75: | Line 75: | ||
44.526876 seconds (1.09 G allocations: 16.546 GiB, 3.13% gc time) |
44.526876 seconds (1.09 G allocations: 16.546 GiB, 3.13% gc time) |
||
</pre> |
</pre> |
||
=={{header|Perl}}== |
|||
Not especially fast, but minimal memory usage. |
|||
{{libheader|ntheory}} |
|||
<lang perl>use strict; |
|||
use warnings; |
|||
use feature <say state>; |
|||
use ntheory <is_prime next_prime>; |
|||
sub comma { reverse ((reverse shift) =~ s/(.{3})/$1,/gr) =~ s/^,//r } |
|||
sub suffix { my($d) = $_[0] =~ /(.)$/; $d == 1 ? 'st' : $d == 2 ? 'nd' : $d == 3 ? 'rd' : 'th' } |
|||
sub prime_sum { |
|||
state $s = state $p = 2; state $i = 1; |
|||
if ($i < (my $n = shift) ) { do { $s += $p = next_prime($p) } until ++$i == $n } |
|||
$s |
|||
} |
|||
sub composite_sum { |
|||
state $s = state $c = 4; state $i = 1; |
|||
if ($i < (my $n = shift) ) { do { 1 until ! is_prime(++$c); $s += $c } until ++$i == $n } |
|||
$s |
|||
} |
|||
my $ci++; |
|||
for my $pi (1 .. 119_000) { |
|||
next if prime_sum($pi) < composite_sum($ci); |
|||
printf( "%20s - %11s prime sum, %12s composite sum\n", |
|||
comma(prime_sum $pi), comma($pi).suffix($pi), comma($ci).suffix($ci)) |
|||
and next if prime_sum($pi) == composite_sum($ci); |
|||
$ci++; |
|||
redo |
|||
}</lang> |
|||
{{out}} |
|||
<pre> 10 - 3rd prime sum, 2nd composite sum |
|||
1,988 - 33rd prime sum, 51st composite sum |
|||
14,697 - 80th prime sum, 147th composite sum |
|||
83,292 - 175th prime sum, 361st composite sum |
|||
1,503,397 - 660th prime sum, 1,582nd composite sum |
|||
18,859,052 - 2,143rd prime sum, 5,699th composite sum |
|||
93,952,013 - 4,556th prime sum, 12,821st composite sum |
|||
89,171,409,882 - 118,785th prime sum, 403,341st composite sum |
|||
9,646,383,703,961 - 1,131,142nd prime sum, 4,229,425th composite sum |
|||
209,456,854,921,713 - 5,012,372nd prime sum, 19,786,181st composite sum</pre> |
|||
=={{header|Phix}}== |
=={{header|Phix}}== |