use strict; use prime; my @diff; my @pns; my %pns_hash; for (my $n = 1; $n < 10000 ; ++$n) { my $p = pn($n); push(@pns, $p); $pns_hash{$p} = 1; } for (my $i = 0; $i < @pns; ++$i) { for (my $j = $i + 1; $j < @pns; ++$j) { my $a = $pns[$i] + $pns[$j]; my $d = $pns[$j] - $pns[$i]; if (is_pn($a) && is_pn($d)) { print "MIN DIFF($d)\n"; exit(0); } } } sub pn { my $n = shift; return $n*(3 * $n - 1) / 2; } sub is_pn { my $p = shift; my $r = (sqrt(24 * $p + 1) + 1) / 6; return $r == int($r); }