sub is_prime { my $guess = shift; # accidentally reversed next two lines. Thanks to petral for catching that :) return 1 if $guess == 2; return unless $guess > 2 and $guess % 2; my $max = 1 + int $guess ** .5; for ( my $divisor = 3; $divisor < $max; $divisor += 2 ) { return unless $guess % $divisor; } return 1; }