#!/usr/bin/perl -w use strict; $| = 1; use Math::Pari qw(nextprime); my $badpair = badpairs(); my $prev = 2; while (1) { my $cur = nextA086627($prev); print "$cur "; $prev = $cur; } exit 0; sub nextA086627 { my $prev = shift; my $digit = substr("$prev", -1, 1); my $cur = $prev; while (1) { $cur = nextprime($cur + 1); next if "$digit$cur" =~ $badpair; return $cur; } } sub badpairs { my @bad; # each successive digit [...] is greater than the previous digit for my $first (0 .. 8) { for my $second (0 .. $first) { push @bad, "$first$second"; } } # or if the previous digit = 9, than any digit except 0 or 9 may follow push @bad, "90", "99"; return join '|', @bad; }