Consecutive primes with ascending or descending differences: Difference between revisions

Added Perl
(Added Perl)
Line 441:
Descending: [322171, 322193, 322213, 322229, 322237, 322243, 322247, 322249] Diffs: [22, 20, 16, 8, 6, 4, 2]
</pre>
 
=={{header|Perl}}==
{{trans|Raku}}
{{libheader|ntheory}}
<lang perl>use strict;
use warnings;
use feature 'say';
use ntheory 'primes';
use List::AllUtils <indexes max>;
 
my $limit = 1000000;
my @primes = @{primes( $limit )};
 
sub runs {
my($op) = @_;
my @diff = my $diff = my $run = 1;
push @diff, map {
my $next = $primes[$_] - $primes[$_ - 1];
if ($op eq '>') { if ($next > $diff) { ++$run } else { $run = 1 } }
else { if ($next < $diff) { ++$run } else { $run = 1 } }
$diff = $next;
$run
} 1 .. $#primes;
 
my @prime_run;
my $max = max @diff;
for my $r ( indexes { $_ == $max } @diff ) {
push @prime_run, join ' ', map { $primes[$r - $_] } reverse 0..$max
}
@prime_run
}
 
say "Longest run(s) of ascending prime gaps up to $limit:\n" . join "\n", runs('>');
say "\nLongest run(s) of descending prime gaps up to $limit:\n" . join "\n", runs('<');</lang>
{{out}}
<pre>Longest run(s) of ascending prime gaps up to 1000000:
128981 128983 128987 128993 129001 129011 129023 129037
402581 402583 402587 402593 402601 402613 402631 402691
665111 665113 665117 665123 665131 665141 665153 665177
 
Longest run(s) of descending prime gaps up to 1000000:
322171 322193 322213 322229 322237 322243 322247 322249
752207 752251 752263 752273 752281 752287 752291 752293</pre>
 
=={{header|Phix}}==
2,392

edits