source code for "files/pe/pe_021.pl"
return to portfolio
- #!/usr/bin/perl
- use strict;
- use warnings;
- use divisors;
- my $d =new divisors;
- my ($k, $p, $sum);
- my %lis;
- $d->make_sieve(10000);
- for $k (3..10000) {
- $lis{$k} = 0;
- }
- while (($k, $p) = each(%lis)) {
- $lis{$k} = $d->divisor_sum($k)-$k;
- }
- $sum = 0;
- while (($k, $p) = each(%lis)) {
- $sum += $k if defined($lis{$p}) && ($lis{$k} == $p && $k == $lis{$p} && $k != $p);
- }
- print $sum;