This code is quite fast, since it skips a lot of unnecessary operations
#!/usr/bin/perl
use strict;
use warnings;
use POSIX;
my ($i,$j,$h,$sentinel) = (0,0,0,0);
# i>=3
for($i=1000000000; $i<=1000000500; $i++){
# if $i is an even number, it can't be a prime
if($i%2==0){}
else{
$h=POSIX::floor(sqrt($i));
$sentinel=0;
# since $i can't be even -> only divide by odd numbers
for($j=3; $j<=$h; $j+=2){
if($i%$j==0){
$sentinel++;
# $i is not a prime, we can get out of the loop
$j=$h;
}
}
if($sentinel==0){
print "$i \n";
}
}
}
|