use prime; use strict; use List::Util qw(sum); my @prime = prime::make_prime_table(100 * 10000); my $max = 0; my $mp = 0; for (my $i = @prime - 1; $i >= 0; --$i) { my $p = $prime[$i]; my $s = $i - 1; my $e = $i - 2; my $t = $prime[$s]; my $c = 0; while ($e >= 0 && $s > 0 && $s - $e > $c) { # print "$p($s:$prime[$s] $e:$prime[$e])\n"; while ($t < $p && $e >= 0) { $t += $prime[$e--]; ++$c; } if ($p == $t && $max < $c) { $max = $c; $mp = $p; print "update ($mp: $max)\n"; } $t -= $prime[$s]; --$c; --$s; } } print "MAX($mp: $max)\n";