my $target = 5_001; # also tried 5_000
my $max = 1_000_000;
my @primes;
my $sieve = '';
# generate list of primes
for (my $try=2; $try <= $max; $try++)
{
next if vec($sieve, $try, 1);
push @primes, $try;
for (my $mults=$try*$try; $mults <= $max; $mults+=$try)
{
vec($sieve, $mults, 1) = 1;
}
}
# number of composites <= n
# http://research.att.com/~njas/sequences/A065855
#
# equivalent to number of primes between prime(n) and n, so that's what
# i'm doing here
for (my $i=0; $i<@primes; $i++)
{
my $j = 0;
$j++ while $primes[$j] <= $i+1;
my $count = 0;
$j++ && $count++ while $primes[$j] < $primes[$i];
next if $count < $target;
printf "%d: %d\n", $i+1, $count;
last;
}