$| = 1; use bigint; sub a { my $n = shift; my $a = 0; my $f = 1; my $b = 2; while ($n>1) { foreach my $d (reverse 1..$b-1) { if ($n % $d==0) { $n /= $d; $a += $d*$f; last; } } $f *= $b; $b++; } return $a ? $a : 1; } foreach my $n (1..448) { my $a = a($n); print "$n $a\n"; }