use integer; # 10^9-10^5 10^5 my $a= 999900000; my $b=1000000000; my $n=$b**0.5; # find primes my @p; # $p[$k] is 1 for composite for ($i=2;$i*$i<=$n;$i++) { if (!$p[$i]) { for ($j=2;$j<=$n/$i;$j++) { $p[$i*$j] = 1; } } } my @s; # $s[$k] is 1 for composite for ($i=2;$i<=$n;$i++) { if (!$p[$i]) { for ($j=$a/$i;$j<=$b/$i;$j++) { my $k = $j*$i-$a; $s[$k] = 1 if ($k>=0); } } } print map { ($_+$a)."\n" } grep { $s[$_]==0 } 0..($b-$a);