diff options
| -rwxr-xr-x | challenge-158/alexander-pankoff/perl/ch-1.pl | 34 | ||||
| -rwxr-xr-x | challenge-158/alexander-pankoff/perl/ch-2.pl | 41 |
2 files changed, 75 insertions, 0 deletions
diff --git a/challenge-158/alexander-pankoff/perl/ch-1.pl b/challenge-158/alexander-pankoff/perl/ch-1.pl new file mode 100755 index 0000000000..5818eb641e --- /dev/null +++ b/challenge-158/alexander-pankoff/perl/ch-1.pl @@ -0,0 +1,34 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use feature qw'say state signatures'; +no warnings qw'experimental::signatures'; + +use List::Util qw(sum0); + +run() unless caller(); + +sub run() { + say join( ', ', additive_primes() ); +} + +sub additive_primes($max = 100) { + return grep { is_prime($_) && is_prime( digit_sum($_) ) } 2 .. $max; +} + +# from challenge 150 task 2 +sub is_prime($x) { + return 0 if $x <= 1; + return 1 if $x <= 3; + for ( my $i = 2 ; $i <= sqrt($x) ; $i++ ) { + return 0 if $x % $i == 0; + } + return 1; +} + +# from challenge 149 task 1 +sub digit_sum($x) { + my $sum = sum0 split( '', $x ); + + return $sum; +} diff --git a/challenge-158/alexander-pankoff/perl/ch-2.pl b/challenge-158/alexander-pankoff/perl/ch-2.pl new file mode 100755 index 0000000000..b672d273e5 --- /dev/null +++ b/challenge-158/alexander-pankoff/perl/ch-2.pl @@ -0,0 +1,41 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use feature qw'say state signatures'; +no warnings qw'experimental::signatures'; + +run() unless caller(); + +sub run() { + + say join( ', ', cuban_primes() ); + +} + +sub cuban_primes($max = 1000) { + + my @cubans = (); + my $i = 1; + my $candidate = 0; + while ( $candidate <= $max ) { + $candidate = centered_hexagonal_number($i); + push @cubans, $candidate if is_prime($candidate); + $i += 1; + } + return @cubans; + +} + +# from challenge 150 task 2 +sub is_prime($x) { + return 0 if $x <= 1; + return 1 if $x <= 3; + for ( my $i = 2 ; $i <= sqrt($x) ; $i++ ) { + return 0 if $x % $i == 0; + } + return 1; +} + +sub centered_hexagonal_number($y) { + return 3 * $y * $y + 3 * $y + 1; +} |
