Erdös-Selfridge categorization of primes: Difference between revisions

Content added Content deleted
m (→‎{{header|Raku}}: minor style tweaks)
m (→‎{{header|Raku}}: Yet more style twiddling)
Line 50: Line 50:


<lang perl6>use Prime::Factor;
<lang perl6>use Prime::Factor;
use Math::Primesieve;
my $sieve = Math::Primesieve.new;


sub Erdös-Selfridge ($n) {
sub Erdös-Selfridge ($n) {
my @factors = prime-factors($n + 1).unique.grep: * > 3;
my @factors = unique grep * > 3, prime-factors $n + 1;
my $category = 1;
my $category = 1;
while @factors.elems {
while @factors.elems {
Line 60: Line 62:
$category
$category
}
}

use Math::Primesieve;
my $sieve = Math::Primesieve.new;


say "First 200 primes; Erdös-Selfridge categorized:";
say "First 200 primes; Erdös-Selfridge categorized:";
my %category = $sieve.n-primes(200).categorize: { .&Erdös-Selfridge };
my %category;
$sieve.n-primes(200).map: { %category{ Erdös-Selfridge $_ }.push: $_ }
.say for sort %category;
.say for sort %category;



say "\nFirst million primes; Erdös-Selfridge categorized:";
say "\nFirst million primes; Erdös-Selfridge categorized:";
%category = $sieve.n-primes(1_000_000).categorize: { .&Erdös-Selfridge };
my @category;
printf "Category %2d: first: %7d, last: %8d, total: %d\n", ++$, .[0], .[*-1], .elems for %category.sort(+*.key)».value;</lang>
$sieve.n-primes(1_000_000).map: { @category[ Erdös-Selfridge $_ ].push: $_ }
printf "Category %2d: first: %7d, last: %8d, total: %d\n", ++$, .[0], .[*-1], .elems for @category.grep: *.elems;</lang>
{{out}}
{{out}}
<pre>First 200 primes; Erdös-Selfridge categorized:
<pre>First 200 primes; Erdös-Selfridge categorized: