Successive prime differences: Difference between revisions
Content added Content deleted
(→{{header|Perl 6}}: Added 2nd Perl 6 solution) |
SqrtNegInf (talk | contribs) (Added Perl example) |
||
Line 198: | Line 198: | ||
Number found = 306 |
Number found = 306 |
||
</pre> |
</pre> |
||
=={{header|Perl}}== |
|||
{{libheader|ntheory}} |
|||
<lang perl>use 5.010; |
|||
use strict; |
|||
use warnings; |
|||
no warnings 'experimental::smartmatch'; |
|||
use List::EachCons; |
|||
use ntheory 'primes'; |
|||
my $limit = 1E6; |
|||
my @primes = (2, @{ primes($limit) }); |
|||
my @intervals = map { $primes[$_] - $primes[$_-1] } 1..$#primes; |
|||
say "Groups of successive primes <= $limit"; |
|||
for my $diffs ([2], [1], [2,2], [2,4], [4,2], [6,4,2]) { |
|||
my $n = -1; |
|||
my @offsets = grep {$_} each_cons @$diffs, @intervals, sub { $n++; $n if @_ ~~ @$diffs }; |
|||
printf "%10s has %5d sets: %15s … %s\n", |
|||
'(' . join(' ',@$diffs) . ')', |
|||
scalar @offsets, |
|||
join(' ', @primes[$offsets[ 0]..($offsets[ 0]+@$diffs)]), |
|||
join(' ', @primes[$offsets[-1]..($offsets[-1]+@$diffs)]); |
|||
}</lang> |
|||
{{out}} |
|||
<pre> (2) has 8169 sets: 3 5 … 999959 999961 |
|||
(1) has 1 sets: 2 3 … 2 3 |
|||
(2 2) has 1 sets: 3 5 7 … 3 5 7 |
|||
(2 4) has 1393 sets: 5 7 11 … 999431 999433 999437 |
|||
(4 2) has 1444 sets: 7 11 13 … 997807 997811 997813 |
|||
(6 4 2) has 306 sets: 31 37 41 43 … 997141 997147 997151 997153</pre> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |