#!/usr/local/bin/perl #!/usr/bin/perl use strict; use warnings; my $max = shift || 100; my @primes; sieve: for my $ns ( map { 1 x $_ } ( 2 .. $max ) ) { for my $ds (@primes) { last if $ds x length($ds) gt $ns; next sieve if $ns =~ /^(?:$ds)+$/; } push @primes, $ns; printf "%3d:%s\n", length $ns, $ns; }