Successive prime differences: Difference between revisions
Content added Content deleted
m (→{{header|zkl}}: comment) |
(→{{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}}== |