aboutsummaryrefslogtreecommitdiff
path: root/challenge-147
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-01-14 23:16:11 +0000
committerGitHub <noreply@github.com>2022-01-14 23:16:11 +0000
commitd201aee55d4f1db48a1cca8989c8d7e29169438e (patch)
tree4309bc42c5c6e0d877ae0cdf532b3912052da511 /challenge-147
parentd8700fe95aff1142981a5e9c9e64d83bf7486633 (diff)
parent54c5f09449b5e3780ed5cac7171ca48d4f99238e (diff)
downloadperlweeklychallenge-club-d201aee55d4f1db48a1cca8989c8d7e29169438e.tar.gz
perlweeklychallenge-club-d201aee55d4f1db48a1cca8989c8d7e29169438e.tar.bz2
perlweeklychallenge-club-d201aee55d4f1db48a1cca8989c8d7e29169438e.zip
Merge pull request #5518 from oWnOIzRi/week147
add solution week 147 task 1 in perl
Diffstat (limited to 'challenge-147')
-rw-r--r--challenge-147/steven-wilson/perl/ch-01.pl39
1 files changed, 39 insertions, 0 deletions
diff --git a/challenge-147/steven-wilson/perl/ch-01.pl b/challenge-147/steven-wilson/perl/ch-01.pl
new file mode 100644
index 0000000000..ceefab2a3d
--- /dev/null
+++ b/challenge-147/steven-wilson/perl/ch-01.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/env perl
+# Week 147 Task 1
+# Truncatable Prime
+# Write a script to generate first 20 left-truncatable prime numbers in base 10.
+
+use strict;
+use warnings;
+use feature qw/ say /;
+use Math::Prime::Util qw/ next_prime is_prime /;
+
+my @ltp = qw/ 2 /;
+my $prime_number = 2;
+
+while ( scalar @ltp < 20 ) {
+ $prime_number = next_prime($prime_number);
+ if ( is_truncatable_prime($prime_number) ) {
+ push @ltp, $prime_number;
+ }
+}
+
+sub is_truncatable_prime {
+ my $prime_number = shift;
+ my $truncatable = 1;
+ while ( length $prime_number > 0 ) {
+ if ( $prime_number =~ /0/ ) { # contains no 0
+ $truncatable = 0;
+ last;
+ }
+ if ( not is_prime($prime_number) ) {
+ $truncatable = 0;
+ last;
+ }
+ $prime_number =~ /^[0-9]{1}([0-9]*)/;
+ $prime_number = $1;
+ }
+ return $truncatable;
+}
+
+say join " ", @ltp;