読者です 読者をやめる 読者になる 読者になる

初代Masteries

きっとモヒカンにもなれないお前たちに告げる!!!

Project Euler - Problem 12

Problem 12

500個以上の約数を持つ最初の三角数を探す問題.

use strict;
use warnings;

my $n = 1;
my $triangular = 1;
while (divisor_count($triangular) < 500) {
    $n++;
    $triangular += $n;
}
print "$triangular\n";

sub divisor_count {
    my $n = shift;

    my ($count, $i) = (0, 2);
    for ($i = 1; $i ** 2 <= $n; ++$i) {
        $count++ if $n % $i == 0;
    }
    $count *= 2;

    return ($i - 1) ** 2 == $n ? $count - 1 : $count;
}

日頃あまり使わない三項演算子を使ってみました.
ここまでごちゃごちゃしている場合は, 三項演算子使わない方がいいかなあ... という気もします.