use List::Util qw(sum);
use bigint;

my @memo = (0 => 1);

sub fact {
    my ($n) = @_;
    return $memo[$n] //= $n * fact($n - 1);
}

sub is_prime {
    my ($n) = @_;
    return (fact($n - 1) + 1) % $n == 0;
}

print sum grep{ not is_prime $_ } (1..10000);