diff options
| author | Alexander Pankoff <ccntrq@screenri.de> | 2022-01-16 10:47:25 +0100 |
|---|---|---|
| committer | Alexander Pankoff <ccntrq@screenri.de> | 2022-01-16 10:48:14 +0100 |
| commit | 28eb8155b7d6f65312d135a01434b7d1efe9f981 (patch) | |
| tree | e50a5104d04c92967e925e93c0fadbe4b95c41c7 /challenge-147 | |
| parent | b660a053feab7ac5ac3fd98226f7b4ffad0e1a33 (diff) | |
| download | perlweeklychallenge-club-28eb8155b7d6f65312d135a01434b7d1efe9f981.tar.gz perlweeklychallenge-club-28eb8155b7d6f65312d135a01434b7d1efe9f981.tar.bz2 perlweeklychallenge-club-28eb8155b7d6f65312d135a01434b7d1efe9f981.zip | |
Add solution fo challenge-147 task 1
Diffstat (limited to 'challenge-147')
| -rw-r--r-- | challenge-147/alexander-pankoff/perl/ch-1.pl | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/challenge-147/alexander-pankoff/perl/ch-1.pl b/challenge-147/alexander-pankoff/perl/ch-1.pl new file mode 100644 index 0000000000..fe0009ac63 --- /dev/null +++ b/challenge-147/alexander-pankoff/perl/ch-1.pl @@ -0,0 +1,47 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use feature qw'say signatures'; +no warnings qw'experimental::signatures'; + +use Data::Dumper; +use List::Util qw(all); + +run() unless caller(); + +sub run() { + say join( ", ", left_truncatable_primes(20) ); +} + +sub left_truncatable_primes($n) { + + my @primes = (); + for ( my $i = 2 ; @primes <= $n ; $i++ ) { + push @primes, $i if is_left_truncatable_prime($i); + + } + + return @primes; +} + +sub is_left_truncatable_prime($x) { + return 0 if $x =~ /0/; + return 0 if !is_prime($x); + return 1 if length $x == 1; + + return is_left_truncatable_prime( substr( $x, 1 ) ); + +} + +sub is_prime($x) { + + return 0 if $x < 2; + return 1 if $x < 4; + + for ( my $i = 2 ; $i <= sqrt($x) ; $i++ ) { + return 0 if $x % $i == 0; + } + + return 1; + +} |
