Successive prime differences: Difference between revisions

Content added Content deleted
(→‎{{header|Perl 6}}: Added 2nd Perl 6 solution)
Line 200: Line 200:


=={{header|Perl 6}}==
=={{header|Perl 6}}==
===Categorized by Successive===
{{works with|Rakudo|2019.03}}
{{works with|Rakudo|2019.03}}
Essentially the code from the [[Sexy_primes#Perl_6|Sexy primes]] task with minor tweaks.
Essentially the code from the [[Sexy_primes#Perl_6|Sexy primes]] task with minor tweaks.
Line 265: Line 266:
Count: 306
Count: 306
</pre>
</pre>
===Precomputed Differences===
{{works with|Rakudo|2019.03}}
<lang perl6>use Math::Primesieve;

constant $max = 1_000_000;
constant @primes = Math::Primesieve.primes($max);
constant @diffs = @primes.skip Z- @primes;

say "Given all ordered primes <= $max, sets with successive differences of:";
for (2,), (1,), (2,2), (2,4), (4,2), (6,4,2) -> @succ {
my $size = @succ.elems;

my @group_start_offsets = @diffs.rotor( $size => 1-$size )
.grep(:k, { $_ eqv @succ });

my ($first, $last) = @group_start_offsets[0, *-1]
.map: { @primes.skip($_).head($size + 1) };

say sprintf '%10s has %5d sets: %15s … %s',
@succ.gist, @group_start_offsets.elems, $first, $last;
}</lang>
{{Out}}
<pre>Given all ordered primes <= 1000000, sets with successive differences of:
(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|Python}}==
=={{header|Python}}==