aboutsummaryrefslogtreecommitdiff
path: root/challenge-154/e-choroba/perl/ch-2.pl
blob: b7ee2bdcdf8112fed3528e7a84ea47c754b9c383 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl
use warnings;
use strict;
use experimental qw{ signatures };

use Math::Prime::Util qw{ is_prime };

my @P = (1, 1, 1);
sub padovan_number ($n) {
    --$n;
    push @P, $P[-2] + $P[-3] while $#P < $n;
    return $P[$n]
}

sub padovan_prime ($n) {
    my @pp;
    my $i = 5;
    while (@pp < $n) {
        my $pn = padovan_number($i++);
        push @pp, $pn if is_prime($pn);
    }
    return @pp
}

use Test::More tests => 1;
is_deeply [padovan_prime(10)],
    [2, 3, 5, 7, 37, 151, 3329, 23833, 13091204281, 3093215881333057],
    'Example 1';