diff options
| author | Dave Jacoby <jacoby.david@gmail.com> | 2021-07-28 15:50:43 -0400 |
|---|---|---|
| committer | Dave Jacoby <jacoby.david@gmail.com> | 2021-07-28 15:50:43 -0400 |
| commit | 7470b95c14424a2c1569467f96c1e86476e86692 (patch) | |
| tree | bf1015bf10cf2ea6422e5eacf2e3936405a5dd94 | |
| parent | f0d56927e71e44602cc56667b5cab65e81c21313 (diff) | |
| download | perlweeklychallenge-club-7470b95c14424a2c1569467f96c1e86476e86692.tar.gz perlweeklychallenge-club-7470b95c14424a2c1569467f96c1e86476e86692.tar.bz2 perlweeklychallenge-club-7470b95c14424a2c1569467f96c1e86476e86692.zip | |
Fixed Ch-1
| -rw-r--r-- | challenge-123/dave-jacoby/perl/ch-1.pl | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/challenge-123/dave-jacoby/perl/ch-1.pl b/challenge-123/dave-jacoby/perl/ch-1.pl index 5b61a4aadc..4707fbb6c5 100644 --- a/challenge-123/dave-jacoby/perl/ch-1.pl +++ b/challenge-123/dave-jacoby/perl/ch-1.pl @@ -15,20 +15,24 @@ GetOptions( 'n=i' => \$n, ); carp 'Bad Input' unless $n > 0; my $u = get_ugly($n); -say "Input: \$n = $n"; -say "Output: $u"; +say "Input: \$n = $n Output: $u"; sub get_ugly ( $n ) { - return 1 if $n == 1; - my $c = 1; + my $c = 0; my $u = 0; while (1) { $u++; - my $f = 0; - $f = 1 if $u % 2 == 0; - $f = 1 if $u % 3 == 0; - $f = 1 if $u % 5 == 0; - $c++ if $f; + my $f = is_ugly($u) ? 1 : 0; + $c++ if $f; return $u if $n == $c; } } + +sub is_ugly( $n ) { + for my $i ( 2, 3, 5 ) { + while ( $n % $i == 0 ) { + $n /= $i; + } + } + return $n == 1 ? 1 : 0; +} |
