diff options
| -rwxr-xr-x | challenge-168/luca-ferrari/raku/ch-2.p6 | 35 |
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 ); +} |
