diff options
| -rw-r--r-- | challenge-158/sgreen/README.md | 4 | ||||
| -rw-r--r-- | challenge-158/sgreen/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-158/sgreen/perl/ch-1.pl | 45 | ||||
| -rwxr-xr-x | challenge-158/sgreen/perl/ch-2.pl | 41 | ||||
| -rwxr-xr-x | challenge-158/sgreen/python/ch-1.py | 41 | ||||
| -rwxr-xr-x | challenge-158/sgreen/python/ch-2.py | 41 |
6 files changed, 171 insertions, 2 deletions
diff --git a/challenge-158/sgreen/README.md b/challenge-158/sgreen/README.md index 57c0021858..56ff6385e4 100644 --- a/challenge-158/sgreen/README.md +++ b/challenge-158/sgreen/README.md @@ -1,3 +1,3 @@ -# The Weekly Challenge 157 +# The Weekly Challenge 158 -Blog: [Three means and big bases](https://dev.to/simongreennet/three-means-and-big-bases-3o2f)
\ No newline at end of file +Blog: [It's a primathon! ](https://dev.to/simongreennet/its-a-primathon-5aki)
\ No newline at end of file diff --git a/challenge-158/sgreen/blog.txt b/challenge-158/sgreen/blog.txt new file mode 100644 index 0000000000..c779839314 --- /dev/null +++ b/challenge-158/sgreen/blog.txt @@ -0,0 +1 @@ +https://dev.to/simongreennet/its-a-primathon-5aki
\ No newline at end of file diff --git a/challenge-158/sgreen/perl/ch-1.pl b/challenge-158/sgreen/perl/ch-1.pl new file mode 100755 index 0000000000..f1f287c8eb --- /dev/null +++ b/challenge-158/sgreen/perl/ch-1.pl @@ -0,0 +1,45 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; + +use List::Util 'sum'; + +sub is_prime { + my $number = shift; + + # Return true or false if the number is a prime + return if $number < 2; + + foreach my $i ( 2 .. int( sqrt($number) ) ) { + return if $number % $i == 0; + } + + # It's a prime + return 1; +} + +sub main { + my %primes = (); + my @additive_primes = (); + + foreach my $x ( 1 .. 100 ) { + + next if not is_prime($x); + + $primes{$x} = 1; + + # Get the sum of all the digits + my $s = sum( split //, $x ); + + if ( $primes{$s} ) { + # It's an additive prime! + push @additive_primes, $x; + } + } + + say join ', ', @additive_primes; +} + +main()
\ No newline at end of file diff --git a/challenge-158/sgreen/perl/ch-2.pl b/challenge-158/sgreen/perl/ch-2.pl new file mode 100755 index 0000000000..d317aa96ad --- /dev/null +++ b/challenge-158/sgreen/perl/ch-2.pl @@ -0,0 +1,41 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; + +sub is_prime { + my $number = shift; + + # Return true or false if the number is a prime + return if $number < 2; + + foreach my $i ( 2 .. int( sqrt($number) ) ) { + return if $number % $i == 0; + } + + # It's a prime + return 1; +} + +sub main { + my @cuban_primes = (); + my $x = 1; + + while ($x) { + # Calculate 3x² + 3x + 1 + my $p = 3 * $x * $x + 3 * $x + 1; + + # We only care about values <= 1000 + last if $p > 1000; + + if ( is_prime($p) ) { + # Add to the cuban_primes list + push @cuban_primes, $p; + } + $x++; + } + say join ', ', @cuban_primes; +} + +main()
\ No newline at end of file diff --git a/challenge-158/sgreen/python/ch-1.py b/challenge-158/sgreen/python/ch-1.py new file mode 100755 index 0000000000..a6ed510df2 --- /dev/null +++ b/challenge-158/sgreen/python/ch-1.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import math + + +def is_prime(number): + # Return true or false if the number is a prime + if number < 2: + return False + + for i in range(2, int(math.sqrt(number)) + 1): + if number % i == 0: + return False + + # It's a prime + return True + + +def main(): + primes = set() + additive_primes = [] + + for x in range(101): + + if not is_prime(x): + continue + + primes.add(x) + + # Get the sum of all the digits + s = sum(int(i) for i in str(x)) + + if s in primes: + # It's an additive prime! + additive_primes.append(x) + + print(*additive_primes, sep=', ') + + +if __name__ == '__main__': + main() diff --git a/challenge-158/sgreen/python/ch-2.py b/challenge-158/sgreen/python/ch-2.py new file mode 100755 index 0000000000..9d741e6a15 --- /dev/null +++ b/challenge-158/sgreen/python/ch-2.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import math + + +def is_prime(number): + # Return true or false if the number is a prime + if number < 2: + return False + + for i in range(2, int(math.sqrt(number)) + 1): + if number % i == 0: + return False + + # It's a prime + return True + + +def main(): + cuban_primes = [] + x = 1 + + while x: + # Calculate 3x² + 3x + 1 + p = 3 * x * x + 3 * x + 1 + + if p > 1000: + # We only care about values <= 1000 + break + + if is_prime(p): + # Add to the cuban_primes list + cuban_primes.append(p) + + x += 1 + + print(*cuban_primes, sep=', ') + + +if __name__ == '__main__': + main() |
