diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-11-04 04:20:40 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-04 04:20:40 +0000 |
| commit | 2da2bf56ef19a0d6fee874e0df8dccd42d434b08 (patch) | |
| tree | b60672004201680a741413dc0344779cd294b025 /challenge-085/polettix/perl/ch-2.pl | |
| parent | 29885d2064c972c0f9314177f5eb5e265b42ef04 (diff) | |
| parent | 858a6ecf1d83c4fe9f4fb8d531f93ae99ea48f7d (diff) | |
| download | perlweeklychallenge-club-2da2bf56ef19a0d6fee874e0df8dccd42d434b08.tar.gz perlweeklychallenge-club-2da2bf56ef19a0d6fee874e0df8dccd42d434b08.tar.bz2 perlweeklychallenge-club-2da2bf56ef19a0d6fee874e0df8dccd42d434b08.zip | |
Merge pull request #2698 from polettix/polettix/pwc085
Add polettix's solution to challenge 085
Diffstat (limited to 'challenge-085/polettix/perl/ch-2.pl')
| -rw-r--r-- | challenge-085/polettix/perl/ch-2.pl | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/challenge-085/polettix/perl/ch-2.pl b/challenge-085/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..90e5644cd2 --- /dev/null +++ b/challenge-085/polettix/perl/ch-2.pl @@ -0,0 +1,36 @@ +#!/usr/bin/env perl +use 5.024; +use warnings; +use experimental qw< postderef signatures >; +no warnings qw< experimental::postderef experimental::signatures >; + +sub factor ($N) { + my %retval; + my @ps = (2, 3); + my $k = 1; + while ($N > 1) { + if (! @ps) { + push @ps, 6 * $k - 1, 6 * $k + 1; + $k++; + } + my $p = shift @ps; + while ($N % $p == 0) { + $retval{$p}++; + $N /= $p; + } + } + return \%retval; +} + +sub power_of_two_integers ($N) { + my $factors = factor($N); + my ($min, @others) = sort {$a <=> $b} values $factors->%*; + return 0 if $min == 1; + for my $exponent (@others) { + return 0 if $exponent % $min; + } + return 1; +} + +my $N = shift // 8; +say power_of_two_integers($N); |
