aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-144/mark-anderson/raku/ch-1.raku19
1 files changed, 19 insertions, 0 deletions
diff --git a/challenge-144/mark-anderson/raku/ch-1.raku b/challenge-144/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..e5e68b46d6
--- /dev/null
+++ b/challenge-144/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/env raku
+
+use Prime::Factor;
+use Test;
+
+is-deeply (^100).grep(&semi-prime), ( 4, 6, 9, 10, 14, 15, 21, 22, 25, 26,
+ 33, 34, 35, 38, 39, 46, 49, 51, 55, 57,
+ 58, 62, 65, 69, 74, 77, 82, 85, 86, 87,
+ 91, 93, 94, 95);
+
+is-deeply (^Inf).hyper.grep(&semi-prime)[1000, 2000, 5000, 9999],
+ (3599, 7454, 19645, 40882);
+
+sub semi-prime($n)
+{
+ my @div = proper-divisors($n, :s).skip;
+ return False if @div ~~ Empty;
+ return @div.grep(*.is-prime) == @div;
+}