aboutsummaryrefslogtreecommitdiff
path: root/challenge-147
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-147')
-rw-r--r--challenge-147/ulrich-rieke/perl/ch-1.pl49
1 files changed, 49 insertions, 0 deletions
diff --git a/challenge-147/ulrich-rieke/perl/ch-1.pl b/challenge-147/ulrich-rieke/perl/ch-1.pl
new file mode 100644
index 0000000000..48fbd72ebf
--- /dev/null
+++ b/challenge-147/ulrich-rieke/perl/ch-1.pl
@@ -0,0 +1,49 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+use POSIX ;
+
+sub isPrime {
+ my $number = shift ;
+ if ( $number == 1 ) {
+ return 0 ;
+ }
+ elsif ( $number == 2 ) {
+ return 1 ;
+ }
+ else {
+ my $root = ceil( sqrt( $number ) ) ;
+ for my $i ( 2 .. $root ) {
+ if ( $number % $i == 0 ) {
+ return 0 ;
+ }
+ }
+ return 1 ;
+ }
+}
+
+sub isLeftTruncatablePrime {
+ my $number = shift ;
+ if ( $number =~ /0/ ) {
+ return 0 ;
+ }
+ my $len = length( $number ) ;
+ for my $i( 0 .. $len - 1 ) {
+ my $truncated = substr( $number , $i ) + 0 ; #enforce number evaluation
+ if ( not isPrime( $truncated ) ) {
+ return 0 ;
+ }
+ }
+ return 1 ;
+}
+
+my @truncatables ;
+my $current = 0 ;
+while ( scalar( @truncatables) < 20 ) {
+ $current++ ;
+ if ( isLeftTruncatablePrime( $current ) ) {
+ push @truncatables , $current ;
+ }
+}
+say join( ',' , @truncatables ) ;