source code for "files/pe/pe_023.pl"
return to portfolio
- #!/usr/bin/perl
- use strict;
- use warnings;
- use divisors;
- use necessary;
- use POSIX qw/ceil/;
- my $d = new divisors;
- my (@abundants, %sums, $k);
- $d->make_sieve(28124);
- for (12..28124) {
- push(@abundants, $_) if 2*$_ < $d->divisor_sum($_);
- }
- for (0..int @abundants-1) {
- for $k ($_..int @abundants-1) {
- $sums{$abundants[$_]+$abundants[$k]} = 1;
- }
- }
- my @arr;
- @arr = grep { $_ < 28124 } keys %sums;
- print 28123*28124/2 - necessary::sum(@arr);