diff options
Diffstat (limited to 'perl/p5.pl')
-rwxr-xr-x | perl/p5.pl | 48 |
1 files changed, 24 insertions, 24 deletions
@@ -10,32 +10,32 @@ use List::Util qw(reduce max all); # Imperative my @primes = (2); sub factorize { - my $n = shift; - for my $i ($primes[-1] .. $n) { - push @primes, $i if all { $i % $_ != 0 } @primes; - } - my $factors; - for my $prime (@primes) { - if ($n % $prime == 0) { - $factors->{$prime}++; - $n /= $prime; - redo; - } - } - return $factors; + my $n = shift; + for my $i ($primes[-1] .. $n) { + push @primes, $i if all { $i % $_ != 0 } @primes; + } + my $factors; + for my $prime (@primes) { + if ($n % $prime == 0) { + $factors->{$prime}++; + $n /= $prime; + redo; + } + } + return $factors; } sub merge_factors { - my $fst = shift; - my $snd = shift; - my $res; - foreach my $k (keys %$fst) { - $res->{$k} = max($res->{$k} || 0, $fst->{$k}); - } - foreach my $k (keys %$snd) { - $res->{$k} = max($res->{$k} || 0, $snd->{$k}); - } - return $res; + my $fst = shift; + my $snd = shift; + my $res; + foreach my $k (keys %$fst) { + $res->{$k} = max($res->{$k} || 0, $fst->{$k}); + } + foreach my $k (keys %$snd) { + $res->{$k} = max($res->{$k} || 0, $snd->{$k}); + } + return $res; } my @factors = map { factorize $_ } (2..20); @@ -43,6 +43,6 @@ my $mcm = reduce { merge_factors($a, $b) } @factors; my $res = 1; foreach my $k (keys %$mcm) { - $res *= $k ** $mcm->{$k}; + $res *= $k ** $mcm->{$k}; } print $res, "\n"; |