aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-06-14 10:44:53 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-06-14 10:44:53 +0100
commit01df4cd7ae1ef9a9812fea2be86712373e0da9e3 (patch)
tree51c0bc01bb557a6411d964e09ec2fe508dc39b9b
parent15e7f2134bc4cc1eba76e6cae11a4a0085ccdac6 (diff)
parentd96c79f6c26905e6f1957d6ffad616ad9b7f1a0f (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-169/wlmb/perl/ch-1.pl22
-rwxr-xr-xchallenge-169/wlmb/perl/ch-2.pl20
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;