diff options
| author | drbaggy <js5@sanger.ac.uk> | 2022-06-10 14:00:41 +0100 |
|---|---|---|
| committer | drbaggy <js5@sanger.ac.uk> | 2022-06-10 14:00:41 +0100 |
| commit | 48c3a14d8d4e1f14aa4ea66ecc2bfd01e73690aa (patch) | |
| tree | a23f0b2490969ccd2d78aea1feb9fcecdfd10616 /challenge-168/lubos-kolouch | |
| parent | b9b5afa16f9e06cec6f3dae7db65c9d08482d500 (diff) | |
| parent | 8fc3ae23025949d2da0c49826fa13d714523c73e (diff) | |
| download | perlweeklychallenge-club-48c3a14d8d4e1f14aa4ea66ecc2bfd01e73690aa.tar.gz perlweeklychallenge-club-48c3a14d8d4e1f14aa4ea66ecc2bfd01e73690aa.tar.bz2 perlweeklychallenge-club-48c3a14d8d4e1f14aa4ea66ecc2bfd01e73690aa.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-168/lubos-kolouch')
| -rw-r--r-- | challenge-168/lubos-kolouch/perl/ch-1.pl | 33 | ||||
| -rw-r--r-- | challenge-168/lubos-kolouch/python/ch-1.py | 39 |
2 files changed, 72 insertions, 0 deletions
diff --git a/challenge-168/lubos-kolouch/perl/ch-1.pl b/challenge-168/lubos-kolouch/perl/ch-1.pl new file mode 100644 index 0000000000..956d2822e4 --- /dev/null +++ b/challenge-168/lubos-kolouch/perl/ch-1.pl @@ -0,0 +1,33 @@ +package main; +use strict; +use warnings; +use Math::Prime::Util qw(is_prime); + +sub generate_perrin_sequence { + my $n = shift; + my @perrin_sequence = ( 3, 0, 2 ); + + my %perrin_primes; + + while ( scalar keys %perrin_primes < $n ) { + my $next_number = $perrin_sequence[-3] + $perrin_sequence[-2]; + push @perrin_sequence, $next_number; + $perrin_primes{$next_number} = 1 if is_prime($next_number); + } + + my @primes = sort { $a <=> $b } keys %perrin_primes; + + return \@primes; +} + +use Test::More; + +is_deeply( + generate_perrin_sequence(13), + [ 2, 3, 5, 7, 17, 29, 277, 367, 853, 14197, 43721, 1442968193, + 792606555396977 + ] +); + +done_testing; +1; diff --git a/challenge-168/lubos-kolouch/python/ch-1.py b/challenge-168/lubos-kolouch/python/ch-1.py new file mode 100644 index 0000000000..8c8790c5dc --- /dev/null +++ b/challenge-168/lubos-kolouch/python/ch-1.py @@ -0,0 +1,39 @@ +""" Challenge 168 Task 1 LK Python """ + +from sympy import isprime + + +def generate_perrin_primes(n: int) -> list: + """ + Generate all primes up to n using the Perrin sequence. + """ + perrin_sequence = [3, 0, 2] + + perrin_primes: dict = {} + + while len(perrin_primes.keys()) < n: + + next_number = perrin_sequence[-3] + perrin_sequence[-2] + perrin_sequence.append(next_number) + + if isprime(next_number): + perrin_primes[next_number] = True + + return sorted(perrin_primes.keys()) + + +assert generate_perrin_primes(13) == [ + 2, + 3, + 5, + 7, + 17, + 29, + 277, + 367, + 853, + 14197, + 43721, + 1442968193, + 792606555396977, +] |
