aboutsummaryrefslogtreecommitdiff
path: root/challenge-146/mohammad-anwar/perl/ch-1.pl
blob: 61dae56683fb5fc351e700de8e023b2499bb1169 (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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl

=head1

Week 146:

    https://theweeklychallenge.org/blog/perl-weekly-challenge-146

Task #1: 10001st Prime Number

    Write a script to generate the 10001st prime number.

=cut

use strict;
use warnings;
use Test::More;

is(find_prime(10_001), 104743, 'Example');

done_testing;

#
#
# METHODS

sub find_prime {
    my ($count) = @_;

    my $c = 0;
    my $n = 2;
    while ($c <= $count) {
        if (is_prime($n)) {
            return $n if (++$c == $count);
        }
        $n++;
    }
}

sub is_prime {
    my ($n) = @_;

    foreach my $i (2 .. sqrt $n) {
        return 0 unless $n % $i
    }

    return 1;
}