File Coverage

ex/prime.pl
Criterion Covered Total %
statement 15 15 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod n/a
total 21 21 100.0


line stmt bran cond sub pod time code
1 1     1   2765 use v5.24;
  1         3  
2 1     1   4 use warnings;
  1         2  
  1         31  
3 1     1   4 use Test::More;
  1         2  
  1         21  
4 1     1   222 use Q::S::L qw(superpos every_state);
  1         2  
  1         246  
5              
6             sub is_prime
7             {
8 3     3   6 my ($number) = @_;
9              
10             # produce all the possible factors up to square root
11 3         915 my $possible_factors = superpos(2 .. sqrt $number);
12              
13             # for every state, check that there's no division remainder
14 3     3   27831 return every_state { ($number % $possible_factors) != 0 };
  3         23  
15             }
16              
17             my %numbers = (
18              
19             # number => is_prime?
20             78 => 0,
21             79 => 1,
22             236116321 => 0,
23             );
24              
25             while (my ($number, $is_prime) = each %numbers) {
26              
27             my $prime = is_prime $number;
28              
29             # did we succeed?
30             is $prime, !!$is_prime, "$number result ok - " . ($is_prime ? "is" : "isnt") . " prime";
31             }
32              
33             done_testing;
34              
35             __END__