#!/usr/bin/perl -w use Data::Dumper; my $dummy = ; my $str = ; chomp $str; my @arr = split /\s+/, $str; my $num = 0; for my $item ( @arr ) { $num += steps($item); } print $num; exit(0); sub steps { my ( $n ) = @_; if ( $n == 1 ) { return 1; } my @parr = get_parr( $n ); my $res = 0; if ( scalar(@parr) == 1 ) { return $n + 1; } my $pnum = scalar(@parr); my $sum = 1; for ( my $index = 1; $index < scalar(@parr); $index++ ) { $sum = 1 + $sum * $parr[$index]; } $res = $sum + $n; return $res; } sub get_parr { my ( $n ) = @_; my $current = $n; my @res = (); for ( my $divider = 2; $divider <= sqrt($current); $divider++ ) { while ( $current % $divider == 0 ) { push @res, $divider; $current = $current / $divider; } } if ( $current > 1 ) { push @res, $current; } return @res; }