aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2021-10-09 17:25:47 +0200
committerLuca Ferrari <fluca1978@gmail.com>2021-10-09 17:25:47 +0200
commitce1cb4aee69363f214b710a1fe6d631971e9bf9a (patch)
tree19f505b579005f93721318770ec793a6ef3c0c38
parentff118e4ed11f65f2bbeae6b5b0513d3857b8a914 (diff)
downloadperlweeklychallenge-club-ce1cb4aee69363f214b710a1fe6d631971e9bf9a.tar.gz
perlweeklychallenge-club-ce1cb4aee69363f214b710a1fe6d631971e9bf9a.tar.bz2
perlweeklychallenge-club-ce1cb4aee69363f214b710a1fe6d631971e9bf9a.zip
Removed unused variable.
-rw-r--r--challenge-133/luca-ferrari/raku/ch-2.p614
1 files changed, 10 insertions, 4 deletions
diff --git a/challenge-133/luca-ferrari/raku/ch-2.p6 b/challenge-133/luca-ferrari/raku/ch-2.p6
index 0af9fa5cd0..d2aaf350f4 100644
--- a/challenge-133/luca-ferrari/raku/ch-2.p6
+++ b/challenge-133/luca-ferrari/raku/ch-2.p6
@@ -1,31 +1,37 @@
#!raku
+# a lazy list of all prime numbers
my @PRIMES = grep {.is-prime}, 1..*;
+# divide a number into a list of its own factors
multi do-factor( 1 ) { (1) }
multi do-factor( Int $n where { $n > 1 } ) {
- my ( $pos, $needle ) = 0, $n;
-
+ my $needle = $n;
my @factors;
for @PRIMES -> $current-factor {
+ # stop if we got a bigger number
last if $current-factor > $needle;
+
+ # skip if the number is not a divisor of what we are searching for
next unless $needle %% $current-factor;
# if here, it is a good factor
@factors.push: $current-factor;
+ # compute the remainder
$needle /= $current-factor;
}
- @factors;
+ @factors.sort;
}
-
+# It is a smith number if the sum of the digits
+# is the sum of the factors
sub is-smith-number( Int $n where { $n > 0 } ) {
return $n.comb.sum == do-factor( $n ).sum;
}