第10001个素数

作者:polettix

https://projecteuler.net/problem=7

通过列出前六个素数:2、3、5、7、11 和 13,我们可以看到第 6 个素数是 13。

第10001个素数是多少?

任何

源代码:prob007-polettix.pl

use v6;

# A simple implementation of Eratosthenes' sieve
sub primes_iterator {
    return sub {
        state %D;
        state $q //= 2;
        while %D{$q}:exists {
            my $p = %D{$q}:delete;

            my $x = $q + $p;
            $x += $p while %D{$x} :exists;
            %D{$x} = $p;
            ++$q;
        }
        %D{$q * $q} = $q;
        return $q++;
    }
}

#= nth: The number of primes we want, defaults to challenge's request
#= vebose: print verbose progress information
sub MAIN(Int :$nth = 10001, Bool :$verbose = False) {
    my $it = primes_iterator();
    for 1 .. $nth - 1 -> $i {
        $it();
        if $verbose {
            say "found $i primes so far" unless $i % 100;
        }
    }

    say $it();
}