aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-168/luca-ferrari/raku/ch-2.p635
1 files changed, 35 insertions, 0 deletions
diff --git a/challenge-168/luca-ferrari/raku/ch-2.p6 b/challenge-168/luca-ferrari/raku/ch-2.p6
new file mode 100755
index 0000000000..a19f99a7ca
--- /dev/null
+++ b/challenge-168/luca-ferrari/raku/ch-2.p6
@@ -0,0 +1,35 @@
+#!raku
+
+# Perl Weekly Challenge 168
+
+sub prime-factors( Int $n where { $n > 0 } )
+{
+ my $number = $n;
+ my @factors;
+ return $n if $n.is-prime;
+
+ for 2 ..^ $n {
+ next if ! $_.is-prime;
+ next if $number !%% $_;
+ next if $_ > $number;
+
+ while ( $number %% $_ ) {
+ @factors.push: $_;
+ $number /= $_;
+ }
+
+ }
+
+ return @factors;
+}
+
+sub HP( Int $n where { $n > 0 } )
+{
+ my $number = prime-factors( $n ).join.Int;
+ return $number if $number.is-prime;
+ return HP( $number );
+}
+
+sub MAIN( Int $n where { $n > 1 } = 10 ) {
+ say HP( $n );
+}