#!/usr/bin/env perl use strict; use warnings; $| = 1; # fast pipes my $limit = shift || 10_000_000; use Math::Prime::Util qw/is_aks_prime/; use Math::Prime::FastSieve; my $sieve = Math::Prime::FastSieve::Sieve->new($limit + 10_000); if (1) { my $n = 2; while ($n <= $limit) { print "$n\n" if $n > 69000; # unless $i++ % 262144; die "$n should be prime" unless is_aks_prime($n); my $next = $sieve->nearest_ge( $n+1 ); my $diff = ($next - $n) >> 1; if ($diff > 1) { foreach my $d (1 .. $diff-1) { my $cn = $n + 2*$d; die "$cn should be composite" if is_aks_prime($cn); } } $n = $next; } print "Success to $limit!\n"; }