diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2021-10-09 17:25:47 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2021-10-09 17:25:47 +0200 |
| commit | ce1cb4aee69363f214b710a1fe6d631971e9bf9a (patch) | |
| tree | 19f505b579005f93721318770ec793a6ef3c0c38 | |
| parent | ff118e4ed11f65f2bbeae6b5b0513d3857b8a914 (diff) | |
| download | perlweeklychallenge-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.p6 | 14 |
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; } |
