$ cat test.pl
#! /usr/bin/perl
use strict;
use warnings;
sub sum {
my $sum = shift;
$sum = (1 + $sum) * $sum / 2;
return $sum;
}
sub yueshu {
my $num = shift;
my $max = $num;
my $yueshu = 2;
my $i = 2;
while ( $i < $max )
{
if ( $num % $i == 0 )
{
$max = $num / $i;
if ( $i == $max )
{
$yueshu ++;
}
else
{
$yueshu += 2;
}
}
$i ++;
}
return $yueshu;
}
my $num = 1;
while( yueshu(sum($num)) < 500 )
{
$num ++;
}
print $num;
$ time test.pl
12375
real 0m51.475s
user 0m31.870s
sys 0m0.020s