Perlコーディング初心者質問スレ Part 54

このエントリーをはてなブックマークに追加
171nobodyさん
有理数で無限小数の場合、必ず循環小数になる事を利用して

use bignum (a => 50);

sub is_terminating($) {
    (my $n = shift) =~ s/0*$//;
    return not ($n =~ /\.\d*(\d+)\1/);
}

for my $i (1..25) {
    my $n = 45 / $i;
    my $s = is_terminating($n) ? "terminating" : "non-terminating";
    print "45/$i is $s.\n";
}

というのはどーお?