June 2018 Update

This commit is contained in:
Ingy döt Net 2018-06-22 20:57:24 +00:00
parent ba8067c3b7
commit 22f33d4004
5278 changed files with 84726 additions and 14379 deletions

View file

@ -1,12 +1,11 @@
sub is-semiprime (Int $n --> Bool) {
not $n.is-prime and
.is-prime given
$n div first $n %% *,
grep &is-prime, 2 .. *;
$n div first $n %% *, flat grep &is-prime, 2 .. *;
}
use Test;
my @primes = grep &is-prime, 2 .. 100;
my @primes = flat grep &is-prime, 2 .. 100;
for ^5 {
nok is-semiprime([*] my @f1 = @primes.roll(1)), ~@f1;
ok is-semiprime([*] my @f2 = @primes.roll(2)), ~@f2;

View file

@ -25,7 +25,7 @@ sub find-factor ( Int $n, $constant = 1 ) {
INIT my $start = now;
# Infinite list of semiprimes
constant @semiprimes = 4, 6, 9, -> $p { ($p + 1 ... &is-semiprime).tail } ... *;
constant @semiprimes = lazy gather for 4 .. * { .take if .&is-semiprime };
# Show the semiprimes < 100
say 'Semiprimes less than 100:';
@ -33,6 +33,6 @@ say @semiprimes[^ @semiprimes.first: * > 100, :k ], "\n";
# Check individual integers, or in this case, a range
my $s = 2⁹⁷ - 1;
say "Is $_ semiprime?: ", is-semiprime( $_ ) for $s .. $s + 30;
say "Is $_ semiprime?: ", .&is-semiprime for $s .. $s + 30;
say 'elapsed seconds: ', now - $start;