sub modpow { my($b, $p, $m) = @_; my $r = 1; for (;;) { $p & 1 and $r = ($r * $b) % $m; 0 < ($p >>= 1) or last; $b = ($b * $b) % $m; } $r; } $s = 0; for $n (2..1000) { modpow($_, $n - 1, $n) != 1 and goto G for 2 .. $n - 1; print $n, " appears to be prime ", ++$s, "\n"; G: } #### sub modpow { my($b, $p, $m) = @_; my $r = 1; for (;;) { $p & 1 and $r = ($r * $b) % $m; 0 < ($p >>= 1) or last; $b = ($b * $b) % $m; } $r; } $s = 0; G: for $n (2..1000) { modpow($_, $n - 1, $n) != 1 and next G for 2 .. $n - 1; print $n, " is prime number ", ++$s, "\n"; }