sub isPrime($) { $num = shift; my ($i,$c); for ($i = 2; $i < $num / 2; $i++) { if ($num % $i == 0){$c += 1;} } if ($c == 1){return 1;} return 0; } #### use 5.010; use strict; sub isPrime (_) { my $num = shift; for my $div (2 .. sqrt $num) # start at 2, end at sqrt($n) { return if $num % $div == 0; # return false if $n evenly divides } return 1; # return true if we got through the entire loop } for (1 .. 30) { if (isPrime) { say "$_ is prime"; } else { say; } } #### use Carp qw/croak/; sub isPrime (_) { my $num = shift; return if $num == 1; # 1 is not prime croak "usage: isPrime(NATURAL NUMBER)" unless $num =~ /^[1-9][0-9]*$/; for my $div (2 .. sqrt $num) { return if $num % $div == 0; } return 1; }