%v = (); for ($i = 2; $i < 7071; $i++) { next if ! isprime($i); for ($j = 2; $j < 368; $j++) { next if ! isprime($j); for ($k = 2; $k < 84; $k++) { next if ! isprime($k); $r = $i ** 2 + $j ** 3 + $k ** 4; next if $r >= 50000000; #print "$i, $j, $k => $r\n"; $tot++ if (! $v{$r}); $v{$r} = 1; } } } print "\n\nTotal: $tot\n"; exit; sub isprime { my $num = $_[0]; my $val = 'prime'; if ($num =~ /^\d+$/ && $num >= 2) { my $mod = 2; my $div = int sqrt $num; while ($mod <= $div) { ($num % $mod) == 0 ? ($val = 'composite', last) : $mod++; } } else { $val = 'neither'; } if ($val eq 'prime') { return 1; } else { return 0; } }