sub is_prime { my @x = (`factor $_[0]` =~ / /g); return @x == 1; } sub is_semiprime { return 0 if int(sqrt($_[0])) ** 2 == $_[0]; my @x = (`factor $_[0]` =~ / /g); return @x == 2; } for my $n (12 .. 1000000) { next if $n % 2; my $found = 0; for my $p (3 .. $n) { next unless $p % 2; my $q = $n - $p; next unless $q % 2; next unless is_prime($p); next unless is_semiprime($q); $found = 1; last; } print "$n\n" unless $found; }