aboutsummaryrefslogtreecommitdiff
path: root/challenge-085/e-choroba/perl/ch-2.pl
blob: 3d16b4f68d900e7e9c7f9928a7c692b9a15d6e38 (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
#!/usr/bin/perl
use warnings;
use strict;

sub power_of_two_integers {
    my ($n) = @_;
    for my $d (2 .. sqrt $n) {
        next unless $n % $d == 0;

        my $m = $n;
        $m /= $d while $m % $d == 0;
        return 1 if $m == 1;
    }
    return 0
}

use Test::More tests => 7;
is power_of_two_integers(8),   1, 'Example 1';
is power_of_two_integers(15),  0, 'Example 2';
is power_of_two_integers(125), 1, 'Example 3';

is power_of_two_integers(36), 1, 'Collin';
is power_of_two_integers(43), 0, 'Prime';
is power_of_two_integers(987654323), 0, 'Large prime';
is power_of_two_integers(51185893014090757), 1, 'Large PoTI';