aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Jacoby <jacoby.david@gmail.com>2021-07-28 15:50:43 -0400
committerDave Jacoby <jacoby.david@gmail.com>2021-07-28 15:50:43 -0400
commit7470b95c14424a2c1569467f96c1e86476e86692 (patch)
treebf1015bf10cf2ea6422e5eacf2e3936405a5dd94
parentf0d56927e71e44602cc56667b5cab65e81c21313 (diff)
downloadperlweeklychallenge-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.pl22
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;
+}