diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-06-14 10:44:53 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-06-14 10:44:53 +0100 |
| commit | 01df4cd7ae1ef9a9812fea2be86712373e0da9e3 (patch) | |
| tree | 51c0bc01bb557a6411d964e09ec2fe508dc39b9b | |
| parent | 15e7f2134bc4cc1eba76e6cae11a4a0085ccdac6 (diff) | |
| parent | d96c79f6c26905e6f1957d6ffad616ad9b7f1a0f (diff) | |
| download | perlweeklychallenge-club-01df4cd7ae1ef9a9812fea2be86712373e0da9e3.tar.gz perlweeklychallenge-club-01df4cd7ae1ef9a9812fea2be86712373e0da9e3.tar.bz2 perlweeklychallenge-club-01df4cd7ae1ef9a9812fea2be86712373e0da9e3.zip | |
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
| -rw-r--r-- | challenge-169/wlmb/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-169/wlmb/perl/ch-1.pl | 22 | ||||
| -rwxr-xr-x | challenge-169/wlmb/perl/ch-2.pl | 20 |
3 files changed, 43 insertions, 0 deletions
diff --git a/challenge-169/wlmb/blog.txt b/challenge-169/wlmb/blog.txt new file mode 100644 index 0000000000..6d0b94b9de --- /dev/null +++ b/challenge-169/wlmb/blog.txt @@ -0,0 +1 @@ +https://wlmb.github.io/2022/06/13/PWC169/ diff --git a/challenge-169/wlmb/perl/ch-1.pl b/challenge-169/wlmb/perl/ch-1.pl new file mode 100755 index 0000000000..5de7afdddf --- /dev/null +++ b/challenge-169/wlmb/perl/ch-1.pl @@ -0,0 +1,22 @@ +#!/usr/bin/env perl +# Perl weekly challenge 169 +# Task 1: Brilliant numbers +# +# See https://wlmb.github.io/2022/06/13/PWC169/#task-1-brilliant-numbers +use v5.12; +use warnings; +use Math::Prime::Util qw(primes); +use Math::Cartesian::Product; +die "Usage: ./ch-1.pl N\nto obtain the first N Brilliant numbers" unless @ARGV; +my $N=shift; +my $low=1; +my @brilliant_numbers; +while(@brilliant_numbers<$N){ + my $primes=primes($low, 10*$low); # generate primes with 1, 2, 3... digits + $low*=10; + push @brilliant_numbers, + sort {$a <=> $b} + map {$_->[0]*$_->[1]} + cartesian {$_[0]>=$_[1]} $primes, $primes; +} +say "The first $N brilliant numbers are: ", join " ", @brilliant_numbers[0..$N-1]; diff --git a/challenge-169/wlmb/perl/ch-2.pl b/challenge-169/wlmb/perl/ch-2.pl new file mode 100755 index 0000000000..8218edf843 --- /dev/null +++ b/challenge-169/wlmb/perl/ch-2.pl @@ -0,0 +1,20 @@ +#!/usr/bin/env perl +# Perl weekly challenge 169 +# Task 2: Achilles numbers +# +# See https://wlmb.github.io/2022/06/13/PWC169/#task-2-achilles-numbers +use v5.12; +use warnings; +use Math::Utils qw(gcd); +use Math::Prime::Util qw(factor_exp); +use List::Util qw(all); +die "Usage: ./ch-2.pl N\nto generate the first N Achilles numbers" unless @ARGV; +my $N=shift; +my $candidate=1; +my @achilles_numbers; +while(@achilles_numbers<$N){ + my @exponents=map{$_->[1]} factor_exp(++$candidate); + push @achilles_numbers, $candidate + if @exponents>1 and (all {$_>1} @exponents) and gcd(@exponents)==1; +} +say "The first $N Achilles numbers are: ", join " ", @achilles_numbers; |
